void CCradio::FreqYaesuHF(void) { ULONG fq; fq = m_rxbuf[1]; fq = fq << 8; fq |= m_rxbuf[2]; fq = fq << 8; fq |= m_rxbuf[3]; fq = fq << 8; fq |= m_rxbuf[4]; double f; switch(RADIO.PollType){ case RADIO_POLLFT1000D: // FT1000D f = 25600000.0; break; case RADIO_POLLFT920: // FT920 f = 1000000.0; break; default: // FT1000MP f = 1600000.0; break; } UpdateFreq(double(fq)/f); }
void __fastcall CCradio::FreqYaesuVU(void) { ULONG fq; fq = m_rxbuf[0] >> 4; fq *= 10; fq += m_rxbuf[0] & 0x0f; fq *= 10; fq += m_rxbuf[1] >> 4; fq *= 10; fq += m_rxbuf[1] & 0x0f; fq *= 10; fq += m_rxbuf[2] >> 4; fq *= 10; fq += m_rxbuf[2] & 0x0f; fq *= 10; fq += m_rxbuf[3] >> 4; fq *= 10; fq += m_rxbuf[3] & 0x0f; UpdateFreq( double(fq) / 100000.0 ); if( RADIO.PollOffset < 3 ) return; switch(m_rxbuf[4]){ case 0x00: // LSB m_LSB = 1; m_RigMode = rmLSB; break; case 0x01: // USB m_LSB = 2; m_RigMode = rmUSB; break; case 0x03: // CW-LSB case 0x83: m_LSB = 3; m_RigMode = rmCW; break; case 0x02: // CW-USB case 0x82: m_LSB = 4; m_RigMode = rmCW; break; case 0x04: // AM case 0x84: m_LSB = 0; m_RigMode = rmAM; break; case 0x08: // FM case 0x88: m_LSB = 0; m_RigMode = rmFM; break; default: // Other m_LSB = 0; m_RigMode = rmUNKNOWN; break; } }
//AA6YQ 1.66B void __fastcall CCradio::FreqYaesu9K2K(void) { //0 1 2 3 //01234567890123456789012345678901234567890 //IF00021155000 +001000 0002000008 ; //abcdefghijklmnopqrstuvwxyz1234567890 <---- 桁位置 //c - m 周波数 21.155000MHz //x 0 = RIT off 1 = RIT on //z 0 = XIT off 1 = XIT on //12 M.CH //4 モード 1=LSB 2=USB 3=CW 4=FM 5=AM 6=RTTY //567 000=RX:A TX:A 001=RX:A TX=B 100=RX:B TX:B 101=RX:B TX=A ULONG fq = 0; m_rxbuf[13] = 0; if( sscanf((LPCSTR)&m_rxbuf[5], "%lu", &fq) == 1 ){ if( fq ) UpdateFreq(double(fq)/1e6); } if( RADIO.PollOffset < 3 ) return; switch(m_rxbuf[29]){ case '1': // LSB m_LSB = 1; m_RigMode = rmLSB; break; case '2': // USB m_LSB = 2; m_RigMode = rmUSB; break; case '3': // CW m_LSB = 0; m_RigMode = rmCW; break; case '4': // FM m_LSB = 0; m_RigMode = rmFM; break; case '5': // AM m_LSB = 0; m_RigMode = rmAM; break; case '6': // RTTY m_LSB = 1; m_RigMode = rmRTTY; break; default: // Other m_LSB = 0; m_RigMode = rmUNKNOWN; break; } }
void CCradio::FreqYaesuVU(void) { ULONG fq; fq = m_rxbuf[0] >> 4; fq *= 10; fq += m_rxbuf[0] & 0x0f; fq *= 10; fq += m_rxbuf[1] >> 4; fq *= 10; fq += m_rxbuf[1] & 0x0f; fq *= 10; fq += m_rxbuf[2] >> 4; fq *= 10; fq += m_rxbuf[2] & 0x0f; UpdateFreq( double(fq) / 1000.0 ); }
int UserUpdatePhrase( ChewingData *pgdata, const uint16_t phoneSeq[], const char wordSeq[] ) { HASH_ITEM *pItem; UserPhraseData data; int len; len = ueStrLen( wordSeq ); pItem = HashFindEntry( pgdata, phoneSeq, wordSeq ); if ( ! pItem ) { if ( ! AlcUserPhraseSeq( &data, len, strlen( wordSeq ) ) ) { return USER_UPDATE_FAIL; } memcpy( data.phoneSeq, phoneSeq, len * sizeof( phoneSeq[ 0 ] ) ); data.phoneSeq[ len ] = 0; strcpy( data.wordSeq, wordSeq ); /* load initial freq */ data.origfreq = LoadOriginalFreq( pgdata, phoneSeq, wordSeq, len ); data.maxfreq = LoadMaxFreq( pgdata, phoneSeq, len ); data.userfreq = data.origfreq; data.recentTime = pgdata->static_data.chewing_lifetime; pItem = HashInsert( pgdata, &data ); LogUserPhrase( pgdata, phoneSeq, wordSeq, pItem->data.origfreq, pItem->data.maxfreq, pItem->data.userfreq, pItem->data.recentTime ); HashModify( pgdata, pItem ); return USER_UPDATE_INSERT; } else { pItem->data.maxfreq = LoadMaxFreq( pgdata, phoneSeq, len ); pItem->data.userfreq = UpdateFreq( pItem->data.userfreq, pItem->data.maxfreq, pItem->data.origfreq, pgdata->static_data.chewing_lifetime - pItem->data.recentTime ); pItem->data.recentTime = pgdata->static_data.chewing_lifetime; LogUserPhrase( pgdata, phoneSeq, wordSeq, pItem->data.origfreq, pItem->data.maxfreq, pItem->data.userfreq, pItem->data.recentTime ); HashModify( pgdata, pItem ); return USER_UPDATE_MODIFY; } }
int UserUpdatePhrase(ChewingData *pgdata, const uint16_t phoneSeq[], const char wordSeq[]) { int ret; int action; int phone_len; int word_len; int orig_freq; int max_freq; int user_freq; int recent_time; int orig_time; assert(pgdata); assert(phoneSeq); assert(wordSeq); phone_len = GetPhoneLen(phoneSeq); word_len = ueStrLen(wordSeq); if (phone_len != word_len) { LOG_WARN("Do not update userphrase because phoneSeq length %d != wordSeq length %d", phone_len, word_len); return USER_UPDATE_FAIL; } if (word_len > MAX_PHRASE_LEN) { LOG_WARN("wordSeq length %d > MAX_PHRASE_LEN (%d)", word_len, MAX_PHRASE_LEN); return USER_UPDATE_FAIL; } ret = UserBindPhone(pgdata, STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE, phoneSeq, phone_len); if (ret != SQLITE_OK) { LOG_ERROR("UserBindPhone returns %d", ret); action = USER_UPDATE_FAIL; goto end; } ret = sqlite3_bind_text(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE], BIND_USERPHRASE_PHRASE, wordSeq, -1, SQLITE_STATIC); if (ret != SQLITE_OK) { LOG_ERROR("sqlite3_bind_text returns %d", ret); action = USER_UPDATE_FAIL; goto end; } recent_time = GetCurrentLifeTime(pgdata); ret = sqlite3_step(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE]); if (ret == SQLITE_ROW) { action = USER_UPDATE_MODIFY; orig_freq = sqlite3_column_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE], SQL_STMT_USERPHRASE[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE].column [COLUMN_USERPHRASE_ORIG_FREQ]); max_freq = LoadMaxFreq(pgdata, phoneSeq, phone_len); user_freq = sqlite3_column_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE], SQL_STMT_USERPHRASE[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE].column [COLUMN_USERPHRASE_USER_FREQ]); orig_time = sqlite3_column_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE], SQL_STMT_USERPHRASE[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE].column [COLUMN_USERPHRASE_TIME]); user_freq = UpdateFreq(user_freq, max_freq, orig_freq, recent_time - orig_time); } else { action = USER_UPDATE_INSERT; orig_freq = LoadOriginalFreq(pgdata, phoneSeq, wordSeq, word_len); max_freq = LoadMaxFreq(pgdata, phoneSeq, phone_len); user_freq = orig_freq; } assert(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_UPSERT]); ret = sqlite3_bind_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_UPSERT], BIND_USERPHRASE_TIME, recent_time); if (ret != SQLITE_OK) { LOG_ERROR("sqlite3_bind_int returns %d", ret); action = USER_UPDATE_FAIL; goto end; } ret = sqlite3_bind_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_UPSERT], BIND_USERPHRASE_USER_FREQ, user_freq); if (ret != SQLITE_OK) { LOG_ERROR("sqlite3_bind_int returns %d", ret); action = USER_UPDATE_FAIL; goto end; } ret = sqlite3_bind_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_UPSERT], BIND_USERPHRASE_MAX_FREQ, max_freq); if (ret != SQLITE_OK) { LOG_ERROR("sqlite3_bind_int returns %d", ret); action = USER_UPDATE_FAIL; goto end; } ret = sqlite3_bind_int(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_UPSERT], BIND_USERPHRASE_ORIG_FREQ, orig_freq); if (ret != SQLITE_OK) { LOG_ERROR("sqlite3_bind_int returns %d", ret); action = USER_UPDATE_FAIL; goto end; } ret = UserBindPhone(pgdata, STMT_USERPHRASE_UPSERT, phoneSeq, phone_len); if (ret != SQLITE_OK) { LOG_ERROR("UserBindPhone returns %d", ret); action = USER_UPDATE_FAIL; goto end; } ret = sqlite3_bind_text(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_UPSERT], BIND_USERPHRASE_PHRASE, wordSeq, -1, SQLITE_STATIC); if (ret != SQLITE_OK) { LOG_ERROR("sqlite3_bind_text returns %d", ret); action = USER_UPDATE_FAIL; goto end; } ret = sqlite3_step(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_UPSERT]); if (ret != SQLITE_DONE) { LOG_ERROR("sqlite3_step returns %d", ret); action = USER_UPDATE_FAIL; goto end; } LogUserPhrase(pgdata, phoneSeq, wordSeq, orig_freq, max_freq, user_freq, recent_time); end: ret = sqlite3_reset(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_UPSERT]); if (ret != SQLITE_OK) { LOG_ERROR("sqlite3_reset returns %d", ret); } ret = sqlite3_reset(pgdata->static_data.stmt_userphrase[STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE]); if (ret != SQLITE_OK) { LOG_ERROR("sqlite3_reset returns %d", ret); } return action; }
//--------------------------------------------------------------------------- void __fastcall CCradio::Execute() { //---- スレッドのコードをここに記述 ---- // Priority = tpLower; while(1){ if( Terminated == TRUE ){ return; } if( m_Command == CRADIO_CLOSE ){ m_Command = 0; return; } if( m_CreateON == TRUE ){ if( m_txcnt ){ if( m_pRadio != NULL ){ if( !(m_pRadio->GetStatus() & mmrpstatusTXBUSY) ){ m_pRadio->PutChar(m_txbuf[m_txrp]); m_txrp++; if( m_txrp >= RADIO_TXBUFSIZE ){ m_txrp = 0; } m_txcnt--; } } else if( !TxBusy() ){ DWORD size=0; ::WriteFile( m_fHnd, &m_txbuf[m_txrp], 1, &size, NULL ); if( size ){ m_txrp++; if( m_txrp >= RADIO_TXBUFSIZE ){ m_txrp = 0; } m_txcnt--; } if( RADIO.ByteWait ) ::Sleep(RADIO.ByteWait); } ::Sleep(1); } else if( m_pRadio != NULL ){ if( m_pRadio->GetStatus() & mmrpstatusFREQ ){ long fq = m_pRadio->GetFreq(); if( fq ) UpdateFreq(double(fq)/1e4); } while(m_pRadio->GetStatus() & mmrpstatusRX){ CatchPoll(m_pRadio->GetChar()); } ::Sleep(10); } else { BYTE dmy[256]; while(1){ int len = RecvLen(); if( !len ) break; if( len >= sizeof(dmy) ) len = sizeof(dmy); Read(dmy, len); if( RADIO.PollType ){ BYTE *p = dmy; for( ; len; p++, len-- ){ CatchPoll(*p); } } } ::Sleep(10); } } else { ::Sleep(10); } } }
void __fastcall CCradio::FreqYaesuHF(void) { ULONG fq; fq = m_rxbuf[1]; fq = fq << 8; fq |= m_rxbuf[2]; fq = fq << 8; fq |= m_rxbuf[3]; fq = fq << 8; fq |= m_rxbuf[4]; double f; switch(RADIO.PollType){ case RADIO_POLLFT1000D: // FT1000D f = 25600000.0; break; case RADIO_POLLFT920: // FT920 f = 1000000.0; break; default: // FT1000MP f = 1600000.0; break; } UpdateFreq(double(fq)/f); if( RADIO.PollOffset < 3 ) return; switch(m_rxbuf[7]){ case 0: // LSB m_LSB = 1; m_RigMode = rmLSB; break; case 1: // USB m_LSB = 2; m_RigMode = rmUSB; break; case 2: // CW m_LSB = 0; m_RigMode = rmCW; break; case 3: // AM m_LSB = 0; m_RigMode = rmAM; break; case 4: // FM m_LSB = 0; m_RigMode = rmFM; break; case 5: // RTTY m_LSB = 1; m_RigMode = rmRTTY; break; case 6: // PACKET m_LSB = 1; m_RigMode = rmPACKET; break; default: // Other m_LSB = 0; m_RigMode = rmUNKNOWN; break; } }