Browse Source

just some more cleanups..

master
Solomon Peachy 9 years ago
parent
commit
42cdb26c32
  1. 36
      src/linuxaldl.c
  2. 23
      src/linuxaldl.h
  3. 2
      src/linuxaldl_definitions.h

36
src/linuxaldl.c

@ -114,9 +114,9 @@ int main(int argc, const char* argv[]){
}
poptFreeContext(popt_aldl); // free the popt context
// ========================================================================
// CONNECT / VERIFY ALDL INTERFACE
// ========================================================================
// =======================================================
// CONNECT / VERIFY ALDL INTERFACE
// =======================================================
// Establish a connection to the aldl
// ===================================
@ -131,16 +131,27 @@ int main(int argc, const char* argv[]){
return -1;
}
// set the custom baud rate:
// the ALDL interface operates at 8192. it would be preferable to get as close to this
// baud rate as possible. if it cannot be set; it should still work at the standard
// baud rate of 9600; the framing errors aren't excessive enough to cause problems,
// and will be caught by bad checksums.
/* Set custom baud rate:
ALDL has two variants;
1) 160 baud with non-RS232 framing. Clock up to 1600 baud
and take one byte from each bit to get us the 8 data bits
plus one start and one stop bit.
2) 8192 baud with RS232 framing.
Prefer to set exact baud rate if possible, but they are non-standard
PC datarates..
8192 should work at 9600; the packets are short enough that framing
errors should be minimal and checksums will catch them anyway.
*/
aldl_settings.customrate = 1;
if (set_custom_baud_rate(aldl_settings.faldl, aldl_settings.definition->ideal_baudrate)!=0) {
fprintf(stderr," Couldn't set baud rate to %d. Using standard rate (%d).\n",
aldl_settings.definition->ideal_baudrate,
aldl_settings.definition->basic_baudrate);
fprintf(stderr," There may be framing errors.\n");
aldl_settings.customrate = 0;
}
// verify the aldl
@ -175,9 +186,9 @@ int main(int argc, const char* argv[]){
}
// ========================================================================
// CLEANUP (FLUSH SERIAL LINE, CLOSE PORT)
// ========================================================================
// ============================================================
// CLEANUP (FLUSH SERIAL LINE, CLOSE PORT)
// ============================================================
// discard any unwritten data
tcflush(aldl_settings.faldl, TCIOFLUSH);
@ -253,7 +264,7 @@ int send_aldl_message(char* msg_buf, unsigned int size)
// so that mode 8 isn't even required.
int get_mode1_message(char* inbuffer, unsigned int size)
{
int res;
int res = 0;
char outbuffer[__MAX_REQUEST_SIZE]; // max request size defined in linuxaldl_definitions.h
aldl_definition* def = aldl_settings.definition;
@ -287,6 +298,7 @@ int get_mode1_message(char* inbuffer, unsigned int size)
seq, 3, 0,
aldl_settings.scan_timeout*1000);
} else {
/* Wait for Framing START ? */
// XXX what sequence to match for 160baud rate?
}

23
src/linuxaldl.h

@ -120,7 +120,7 @@ typedef struct _linuxaldl_definition {
// message is the 4th byte onward, this should be 3. (1+3 = 4)
byte_def_t* mode1_def; // pointer to start of table of byte_def_t structs.
// the last element must be LINUXALDL_MODE1_END_DEF
// the last element must be LINUXALDL_MODE1_END_DEF
char mode8_request[__MAX_REQUEST_SIZE]; // the mode 8 (silence) request message, incl checksum
unsigned int mode8_request_length; // the length of the mode 8 message incl checksum
@ -141,31 +141,32 @@ typedef struct _linuxaldl_settings
{
/* Configuration fields */
const char* aldlportname; // path to aldl interface port
const char* logfilename; // filename for the log file
const char* aldldefname; // name for the ALDL definition to be used
const char* logfilename; // filename for the log file
const char* aldldefname; // name for the ALDL definition to be used
unsigned int scan_interval; // msec between scan requests
unsigned int scan_timeout; // msec to timeout on scan request.
// note that read-sequence takes timeout in usec. // usec = msec*1000
// note that read-sequence takes timeout in usec.
// usec = msec*1000
/* Data definitions */
aldl_definition** aldl_definition_table; // array of pointers to data definitions. (see linuxaldl_definitions.h)
/* Runtime stuff */
int faldl; // aldl serial interface file descriptor
int customrate; // 1 if we are using accurate datarate.
int faldl; // aldl serial interface file descriptor
int flogfile; // file descriptor for log file
int scanning; // 1 when the timer has been set for making scans, otherwise 0.
int scanning; // 1 when the timer has been set for making scans, otherwise 0.
aldl_definition* definition; // see linuxaldl_definitions.h
char* data_set_raw; // the current/most recent set of data from a mode1 message.
// this is allocated when a definition is selected
char** data_set_strings; // pointer to array of data set in string format.
// allocated when a definition is selected in the GUI
float* data_set_floats; // data set in float format
// allocated when a definition is selected in the GUI
char** data_set_strings;// pointer to array of data set in string format.
// allocated when a definition is selected in the GUI
float* data_set_floats; // data set in float format
// allocated when a definition is selected in the GUI
} linuxaldl_settings;
// function prototypes

2
src/linuxaldl_definitions.h

@ -255,7 +255,7 @@ aldl_definition aldl_9A = { .mask = "9A",
.mode1_data_offset = 1,
.mode1_def = aldl_9A_mode1,
.basic_baudrate = B4800,
.ideal_baudrate = 160,
.ideal_baudrate = 1600, /* ie basic baud rate / 3 */
};
/* Definition table */

Loading…
Cancel
Save