/* hamlib - (C) Frank Singleton 2000 (vk3fcs@ix.netcom.com) * * testlibft747.c - (C) Frank Singleton 2000 (vk3fcs@ix.netcom.com) * This program tests the libft747.so API for communicating * via serial interface to an FT-747GX using the "CAT" interface * box (FIF-232C) or similar. * * * $Id: testlibft747.c,v 1.1 2000-07-18 20:55:01 frank Exp $ * */ #include #include /* Standard input/output definitions */ #include /* String function definitions */ #include /* UNIX standard function definitions */ #include /* File control definitions */ #include /* Error number definitions */ #include /* POSIX terminal control definitions */ #include #include "testlibft747.h" #include "ft747.h" static unsigned char datain[350]; /* data read from rig */ struct ft747_update_data { unsigned char displayed_status; unsigned char displayed_freq[5]; unsigned char current_band_data; unsigned char vfo_a_status; unsigned char vfo_a_freq_block[5]; }; /* * Decode routines for status update map */ static void decode_status_flags(unsigned char flags) { if((flags & SF_DLOCK) != 0 ) { printf("Dial Lock = SET \n"); } else { printf("Dial Lock = CLEAR \n"); } if((flags & SF_SPLIT) != 0 ) { printf("Split = SET \n"); } else { printf("Split = CLEAR \n"); } if((flags & SF_CLAR) != 0 ) { printf("Clar = SET \n"); } else { printf("Clar = CLEAR \n"); } if((flags & SF_VFOAB) != 0 ) { printf("VFO = B \n"); } else { printf("VFO = A \n"); } if((flags & SF_VFOMR) != 0 ) { printf("VFO/MR = MR \n"); } else { printf("VFO/MR = VFO \n"); } if((flags & SF_RXTX) != 0 ) { printf("RX/TX = TX \n"); } else { printf("RX/TX = RX \n"); } if((flags & SF_PRI) != 0 ) { printf("Priority Monitoring = ON \n"); } else { printf("Priority Monitoring = OFF \n"); } } /* * Decode routines for status update map */ static void decode_mode_bit_map(unsigned char mbm) { unsigned char mask = 0x1f; unsigned char mode = mbm & mask; /* grab operating mode */ printf("mbm = %x, mode = %x \n",mbm, mode); switch(mode) { case 1: printf("Current Mode = FM \n"); break; case 2: printf("Current Mode = AM \n"); break; case 4: printf("Current Mode = CW \n"); break; case 8: printf("Current Mode = USB \n"); break; case 16: printf("Current Mode = LSB \n"); break; default: printf("Current mode = XXXXX \n"); break; } if((mbm & MODE_NAR) != 0 ) { printf("Narrow = SET \n"); } else { printf("Narrow = CLEAR \n"); } } /* * Decode routines for status update map */ static void decode_band_data(unsigned char data) { unsigned char mask = 0x0f; unsigned char bd = data & mask; /* grab band data */ printf("Band data is %f - %f \n", band_data[bd], band_data[bd+1]); } /* * Do a hex dump of the unsigned car array. */ static void dump_hex(unsigned char *ptr, int size, int length) { int i; printf("Memory Dump \n\n"); for(i=0; idisplayed_freq[1], header->displayed_freq[2], header->displayed_freq[3], header->displayed_freq[4] ); decode_status_flags(datain[0]); /* decode flags */ printf("Displayed Memory = %i \n", datain[23]); decode_mode_bit_map(datain[24]); /* decode mode bit map */ decode_band_data(datain[6]); /* decode current band data */ dump_hex(datain, 345, 16); /* do a hex dump */ return 0; } /* * Main program starts here.. */ int main(void) { int fd; fd = open_port(SERIAL_PORT); printf("port opened ok \n"); test(fd); printf("testing communication result ok \n"); close(fd); printf("port closed ok \n"); return 0; }