Exemple #1
0
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);
}
Exemple #2
0
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;
    }
}
Exemple #3
0
//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;
    }
}
Exemple #4
0
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 );
}
Exemple #5
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;
}
Exemple #7
0
//---------------------------------------------------------------------------
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);
		}
	}
}
Exemple #8
0
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;
    }
}