[Hamlib-cvs-digest] CVS: hamlib/ft747 ft747.c,1.25,1.26 ft747.h,1.18,1.19
Library to control radio transceivers and receivers
Brought to you by:
n0nb
From: Frank S. <jav...@us...> - 2000-12-13 01:26:11
|
Update of /cvsroot/hamlib/hamlib/ft747 In directory slayer.i.sourceforge.net:/tmp/cvs-serv1565 Modified Files: ft747.c ft747.h Log Message: Removed static stuff from functions. Also, begin to implement table driven command translation from API to rig native. priv now contains a cmd table that is used for backend commands towards rig. Index: ft747.c =================================================================== RCS file: /cvsroot/hamlib/hamlib/ft747/ft747.c,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -r1.25 -r1.26 *** ft747.c 2000/12/11 04:19:10 1.25 --- ft747.c 2000/12/13 01:26:08 1.26 *************** *** 28,32 **** - /* * TODO - FS --- 28,31 ---- *************** *** 63,70 **** /* rig instance will copy from these and modify if required . */ /* Complete sequences (1) can be read and used directly as a cmd sequence . */ ! /* Incomplete sequences (0) must be copied to priv data and completed */ ! /* there. */ ! static const struct ft747_cmd_set ncmd[] = { { 1, { 0x00, 0x00, 0x00, 0x00, 0x01 } }, /* split = off */ { 1, { 0x00, 0x00, 0x00, 0x01, 0x01 } }, /* split = on */ --- 62,69 ---- /* rig instance will copy from these and modify if required . */ /* Complete sequences (1) can be read and used directly as a cmd sequence . */ ! /* Incomplete sequences (0) must be completed with extra parameters */ ! /* eg: mem number, or freq etc.. */ ! static const ft747_cmd_set_t ncmd[] = { { 1, { 0x00, 0x00, 0x00, 0x00, 0x01 } }, /* split = off */ { 1, { 0x00, 0x00, 0x00, 0x01, 0x01 } }, /* split = on */ *************** *** 219,226 **** rig_debug(RIG_DEBUG_VERBOSE,"ft747:ft747_init called \n"); ! /* init the priv_data from static struct ! * + override with rig-specific preferences */ ! /* TODO: read pacing from preferences */ --- 218,226 ---- rig_debug(RIG_DEBUG_VERBOSE,"ft747:ft747_init called \n"); ! /* ! * Copy native cmd set to private cmd storage area */ ! ! memcpy(p->pcs,ncmd,sizeof(ncmd)); /* TODO: read pacing from preferences */ *************** *** 303,316 **** struct rig_state *rig_s; struct ft747_priv_data *p; ! ! static unsigned char cmd[] = { 0x00, 0x00, 0x00, 0x00, 0x0a }; /* set freq */ ! static unsigned char bcd[] = { 0,0,0,0 }; /* set freq */ ! ! int i; if (!rig) return -RIG_EINVAL; ! p = (struct ft747_priv_data*)rig->state.priv; rig_s = &rig->state; --- 303,314 ---- struct rig_state *rig_s; struct ft747_priv_data *p; ! unsigned char *cmd; /* points to sequence to send */ if (!rig) return -RIG_EINVAL; ! ! p = (struct ft747_priv_data*)rig->state.priv; + rig_s = &rig->state; *************** *** 319,337 **** ft747_set_vfo(rig, vfo); /* select VFO first , new API */ - to_bcd(bcd,freq,8); ! dump_hex(bcd,4); /* just checking */ ! rig_debug(RIG_DEBUG_VERBOSE,"ft747: requested freq after conversion = %Li Hz \n", from_bcd(bcd,8)); ! to_bcd(bcd,freq/10,8); /* must pass as multiple of 10 Hz to ft747 yuk , see TODO -- FS*/ ! for(i=0; i<4; i++) { ! cmd[i] = bcd[i]; /* add bcd coded freq to cmd */ ! } write_block(rig_s->fd, cmd, FT747_CMD_LENGTH, rig_s->write_delay, rig_s->post_write_delay); - return RIG_OK; } --- 317,335 ---- ft747_set_vfo(rig, vfo); /* select VFO first , new API */ ! /* ! * Copy native cmd freq_set to private cmd storage area ! */ ! memcpy(&p->p_cmd,&ncmd[FT_747_NATIVE_FREQ_SET].nseq,FT747_CMD_LENGTH); ! to_bcd(p->p_cmd,freq/10,8); /* store bcd format in in p_cmd */ ! /* TODO -- fix 10Hz resolution -- FS */ ! rig_debug(RIG_DEBUG_VERBOSE,"ft747: requested freq after conversion = %Li Hz \n", from_bcd(p->p_cmd,8)* 10 ); + cmd = p->p_cmd; /* get native sequence */ write_block(rig_s->fd, cmd, FT747_CMD_LENGTH, rig_s->write_delay, rig_s->post_write_delay); return RIG_OK; } *************** *** 383,390 **** struct rig_state *rig_s; struct ft747_priv_data *p; ! ! unsigned char mymode; /* ft747 mode value */ ! ! static unsigned char cmd[] = { 0x00, 0x00, 0x00, 0x00, 0x0c }; /* mode set */ if (!rig) --- 381,386 ---- struct rig_state *rig_s; struct ft747_priv_data *p; ! unsigned char *cmd; /* points to sequence to send */ ! unsigned char cmd_index; /* index of sequence to send */ if (!rig) *************** *** 404,422 **** switch(mode) { case RIG_MODE_AM: ! mymode = MODE_SET_AMW; break; case RIG_MODE_CW: ! mymode = MODE_SET_CWW; break; case RIG_MODE_USB: ! mymode = MODE_SET_USB; break; case RIG_MODE_LSB: ! mymode = MODE_SET_LSB; break; case RIG_MODE_FM: ! mymode = MODE_SET_FMW; break; - default: return -RIG_EINVAL; /* sorry, wrong MODE */ --- 400,417 ---- switch(mode) { case RIG_MODE_AM: ! cmd_index = FT_747_NATIVE_MODE_SET_AMW; break; case RIG_MODE_CW: ! cmd_index = FT_747_NATIVE_MODE_SET_CWW; break; case RIG_MODE_USB: ! cmd_index = FT_747_NATIVE_MODE_SET_USB; break; case RIG_MODE_LSB: ! cmd_index = FT_747_NATIVE_MODE_SET_LSB; break; case RIG_MODE_FM: ! cmd_index = FT_747_NATIVE_MODE_SET_FMW; break; default: return -RIG_EINVAL; /* sorry, wrong MODE */ *************** *** 429,445 **** switch(width) { ! case RIG_PASSBAND_NORMAL: /* easy case */ break; case RIG_PASSBAND_NARROW: /* must set narrow */ ! mymode |= MODE_NAR; break; - case RIG_PASSBAND_WIDE: - return -RIG_EINVAL; /* sorry, wrong WIDTH */ } ! cmd[3] = mymode; write_block(rig_s->fd, cmd, FT747_CMD_LENGTH, rig_s->write_delay, rig_s->post_write_delay); ! rig_debug(RIG_DEBUG_VERBOSE,"ft747: rig specific mode = %x \n", mymode); return RIG_OK; /* good */ --- 424,461 ---- switch(width) { ! case RIG_PASSBAND_NORMAL: /* easy case , no change to native sequence */ break; + + case RIG_PASSBAND_WIDE: + return -RIG_EINVAL; /* sorry, WIDE WIDTH is not supported */ + case RIG_PASSBAND_NARROW: /* must set narrow */ ! switch(mode) { ! case RIG_MODE_AM: ! cmd_index = FT_747_NATIVE_MODE_SET_AMN; ! break; ! case RIG_MODE_FM: ! cmd_index = FT_747_NATIVE_MODE_SET_FMN; ! break; ! case RIG_MODE_CW: ! cmd_index = FT_747_NATIVE_MODE_SET_CWN; ! break; ! default: ! return -RIG_EINVAL; /* sorry, wrong MODE/WIDTH combo */ ! } break; + default: + return -RIG_EINVAL; /* sorry, wrong WIDTH requested */ } + + /* + * phew! now send cmd to rig + */ ! cmd = (unsigned char *) p->pcs[cmd_index].nseq; /* get native sequence */ write_block(rig_s->fd, cmd, FT747_CMD_LENGTH, rig_s->write_delay, rig_s->post_write_delay); ! ! rig_debug(RIG_DEBUG_VERBOSE,"ft747: cmd_index = %i \n", cmd_index); return RIG_OK; /* good */ *************** *** 460,464 **** mymode = p->update_data[FT747_SUMO_DISPLAYED_MODE]; ! mymode = mymode & MODE_MASK; /* mask out bits 5 and 6 */ rig_debug(RIG_DEBUG_VERBOSE,"ft747: mymode = %x \n", mymode); --- 476,480 ---- mymode = p->update_data[FT747_SUMO_DISPLAYED_MODE]; ! mymode &= MODE_MASK; /* mask out bits 5 and 6 */ rig_debug(RIG_DEBUG_VERBOSE,"ft747: mymode = %x \n", mymode); *************** *** 509,514 **** struct rig_state *rig_s; struct ft747_priv_data *p; - static unsigned char cmd[] = { 0x00, 0x00, 0x00, 0x00, 0x05 }; /* select vfo A/B/Current */ if (!rig) return -RIG_EINVAL; --- 525,533 ---- struct rig_state *rig_s; struct ft747_priv_data *p; + unsigned char *cmd; /* points to sequence to send */ + unsigned char cmd_index; /* index of sequence to send */ + + if (!rig) return -RIG_EINVAL; *************** *** 525,556 **** switch(vfo) { case RIG_VFO_A: ! cmd[3] = FT747_VFO_A; ! write_block(rig_s->fd, cmd, FT747_CMD_LENGTH, rig_s->write_delay, rig_s->post_write_delay); p->current_vfo = vfo; /* update active VFO */ ! return RIG_OK; case RIG_VFO_B: ! cmd[3] = FT747_VFO_B; ! write_block(rig_s->fd, cmd, FT747_CMD_LENGTH, rig_s->write_delay, rig_s->post_write_delay); p->current_vfo = vfo; /* update active VFO */ ! return RIG_OK; case RIG_VFO_CURR: switch(p->current_vfo) { /* what is my active VFO ? */ case RIG_VFO_A: ! cmd[3] = FT747_VFO_A; ! write_block(rig_s->fd, cmd, FT747_CMD_LENGTH, rig_s->write_delay, rig_s->post_write_delay); ! return RIG_OK; case RIG_VFO_B: ! cmd[3] = FT747_VFO_B; ! write_block(rig_s->fd, cmd, FT747_CMD_LENGTH, rig_s->write_delay, rig_s->post_write_delay); ! return RIG_OK; default: rig_debug(RIG_DEBUG_VERBOSE,"ft747: Unknown default VFO \n"); ! return -RIG_EINVAL; /* sorry, wrong VFO */ } ! default: return -RIG_EINVAL; /* sorry, wrong VFO */ } } --- 544,582 ---- switch(vfo) { case RIG_VFO_A: ! cmd_index = FT_747_NATIVE_VFO_A; p->current_vfo = vfo; /* update active VFO */ ! break; case RIG_VFO_B: ! cmd_index = FT_747_NATIVE_VFO_B; p->current_vfo = vfo; /* update active VFO */ ! break; case RIG_VFO_CURR: switch(p->current_vfo) { /* what is my active VFO ? */ case RIG_VFO_A: ! cmd_index = FT_747_NATIVE_VFO_A; ! break; case RIG_VFO_B: ! cmd_index = FT_747_NATIVE_VFO_B; ! break; default: rig_debug(RIG_DEBUG_VERBOSE,"ft747: Unknown default VFO \n"); ! return -RIG_EINVAL; /* sorry, wrong current VFO */ } ! ! break; ! default: return -RIG_EINVAL; /* sorry, wrong VFO */ } + + /* + * phew! now send cmd to rig + */ + + cmd = (unsigned char *) p->pcs[cmd_index].nseq; /* get native sequence */ + write_block(rig_s->fd, cmd, FT747_CMD_LENGTH, rig_s->write_delay, rig_s->post_write_delay); + return RIG_OK; + } *************** *** 592,595 **** --- 618,623 ---- struct ft747_priv_data *p; unsigned char *cmd; /* points to sequence to send */ + unsigned char cmd_index; /* index of sequence to send */ + if (!rig) *************** *** 604,611 **** switch(ptt) { case RIG_PTT_OFF: ! cmd = (unsigned char *)&ncmd[FT_747_NATIVE_MODE_PTT_OFF].nseq; /* get native sequence */ break; case RIG_PTT_ON: ! cmd = (unsigned char *)&ncmd[FT_747_NATIVE_MODE_PTT_ON].nseq; break; default: --- 632,639 ---- switch(ptt) { case RIG_PTT_OFF: ! cmd_index = FT_747_NATIVE_PTT_OFF; break; case RIG_PTT_ON: ! cmd_index = FT_747_NATIVE_PTT_ON; break; default: *************** *** 613,617 **** --- 641,651 ---- } + /* + * phew! now send cmd to rig + */ + + cmd = (unsigned char *) p->pcs[cmd_index].nseq; /* get native sequence */ write_block(rig_s->fd, cmd, FT747_CMD_LENGTH, rig_s->write_delay, rig_s->post_write_delay); + return RIG_OK; /* good */ } *************** *** 854,859 **** - #endif - /* --- 888,891 ---- *************** *** 868,871 **** --- 900,906 ---- return; } + #endif + + Index: ft747.h =================================================================== RCS file: /cvsroot/hamlib/hamlib/ft747/ft747.h,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -r1.18 -r1.19 *** ft747.h 2000/12/11 04:19:10 1.18 --- ft747.h 2000/12/13 01:26:08 1.19 *************** *** 95,102 **** FT_747_NATIVE_MODE_SET_FMW, FT_747_NATIVE_MODE_SET_FMN, ! FT_747_NATIVE_MODE_PACING, ! FT_747_NATIVE_MODE_PTT_OFF, ! FT_747_NATIVE_MODE_PTT_ON, ! FT_747_NATIVE_MODE_UPDATE }; --- 95,104 ---- FT_747_NATIVE_MODE_SET_FMW, FT_747_NATIVE_MODE_SET_FMN, ! FT_747_NATIVE_PACING, ! FT_747_NATIVE_PTT_OFF, ! FT_747_NATIVE_PTT_ON, ! FT_747_NATIVE_UPDATE, ! FT_747_NATIVE_SIZE /* end marker, value indicates number of */ ! /* native cmd entries */ }; *************** *** 106,110 **** /* ! * Data structure for FT747 native cmd set */ --- 108,112 ---- /* ! * Basic Data structure for FT747 native cmd set */ *************** *** 114,173 **** }; ! /* typedef struct ft747_cmd_set ft747_cmd_set_t; */ - #if 0 - #define FT_747_NATIVE_SPLIT_OFF 0 - #define FT_747_NATIVE_SPLIT_ON 1 - #define FT_747_NATIVE_RECALL_MEM 2 - #define FT_747_NATIVE_VFO_TO_MEM 3 - #define FT_747_NATIVE_DLOCK_OFF 4 - #define FT_747_NATIVE_DLOCK_ON 5 - #define FT_747_NATIVE_VFO_A 6 - #define FT_747_NATIVE_VFO_B 7 - #define FT_747_NATIVE_M_TO_VFO 9 - #define FT_747_NATIVE_UP_500K 9 - #define FT_747_NATIVE_DOWN_500K 10 - #define FT_747_NATIVE_CLARIFY_OFF 12 - #define FT_747_NATIVE_CLARIFY_ON 12 - #define FT_747_NATIVE_FREQ_SET 13 - #define FT_747_NATIVE_MODE_SET_LSB 14 - #define FT_747_NATIVE_MODE_SET_USB 15 - #define FT_747_NATIVE_MODE_SET_CWW 16 - #define FT_747_NATIVE_MODE_SET_CWN 17 - #define FT_747_NATIVE_MODE_SET_AMW 18 - #define FT_747_NATIVE_MODE_SET_AMN 19 - #define FT_747_NATIVE_MODE_SET_FMW 20 - #define FT_747_NATIVE_MODE_SET_FMN 20 - - #define FT_747_NATIVE_MODE_PACING 21 - #define FT_747_NATIVE_MODE_PTT_OFF 22 - #define FT_747_NATIVE_MODE_PTT_ON 23 - #define FT_747_NATIVE_MODE_UPDATE 24 - - - #endif - - - - - - - - - - - - - - - - - - - - - /* Internal MODES - when setting modes via cmd_mode_set() */ --- 116,123 ---- }; ! typedef struct ft747_cmd_set ft747_cmd_set_t; /* Internal MODES - when setting modes via cmd_mode_set() */ *************** *** 248,252 **** unsigned int read_update_delay; /* depends on pacing value */ unsigned char current_vfo; /* active VFO from last cmd , can be either RIG_VFO_A or RIG_VFO_B only */ ! unsigned char p_cmd[FT747_CMD_LENGTH]; /* private copy of constructed CAT cmd */ unsigned char update_data[FT747_STATUS_UPDATE_DATA_LENGTH]; /* returned data */ }; --- 198,203 ---- unsigned int read_update_delay; /* depends on pacing value */ unsigned char current_vfo; /* active VFO from last cmd , can be either RIG_VFO_A or RIG_VFO_B only */ ! unsigned char p_cmd[FT747_CMD_LENGTH]; /* private copy of 1 constructed CAT cmd */ ! ft747_cmd_set_t pcs[FT_747_NATIVE_SIZE]; /* private cmd set */ unsigned char update_data[FT747_STATUS_UPDATE_DATA_LENGTH]; /* returned data */ }; |