bool CHackRFController::setFrequency(const CFrequency& freq)
{
	/* Convert Freq Hz 64bits to Freq MHz (32bits) & Freq Hz (32bits) */
	wxUint32 lFreqMHz = wxUint32(freq.get() / wxUint64(1000000U));
	wxUint32 lFreqHz  = wxUint32(freq.get() % wxUint64(1000000U));

	struct {
		wxUint32 freqMHz;	/* From 30 to 6000MHz */
		wxUint32 freqHz;	/* From 0 to 999999Hz */
							/* Final Freq = freq_mhz+freq_hz */
	} setFreqParams;

	setFreqParams.freqMHz = wxUINT32_SWAP_ON_BE(lFreqMHz);
	setFreqParams.freqHz  = wxUINT32_SWAP_ON_BE(lFreqHz);

	wxUint8 length = sizeof(setFreqParams);
	int result = ::libusb_control_transfer(m_device, LIBUSB_ENDPOINT_OUT | LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE, REQUEST_SET_FREQUENCY, 0, 0, (unsigned char*)&setFreqParams, length, 0);
	if (result < 0) {
		wxLogError(wxT("Error from libusb_control_transfer: err=%d"), result);
		return false;
	}

	return true;
}
Example #2
0
void DataStreamTestCase::Int64RW()
{
    TestMultiRW<wxInt64>::ValueArray ValuesI64;
    TestMultiRW<wxUint64>::ValueArray ValuesUI64;

    ValuesI64.push_back(wxInt64(0l));
    ValuesI64.push_back(wxInt64(1l));
    ValuesI64.push_back(wxInt64(-1l));
    ValuesI64.push_back(wxInt64(0x12345678l));
    ValuesI64.push_back((wxInt64(0x12345678l) << 32) + wxInt64(0xabcdef01l));

    ValuesUI64.push_back(wxUint64(0l));
    ValuesUI64.push_back(wxUint64(1l));
    ValuesUI64.push_back(wxUint64(0x12345678l));
    ValuesUI64.push_back((wxUint64(0x12345678l) << 32) + wxUint64(0xabcdef01l));

    CPPUNIT_ASSERT( TestRW(wxUint64(0x12345678l)) == wxUint64(0x12345678l) );
    CPPUNIT_ASSERT( TestRW((wxUint64(0x12345678l) << 32) + wxUint64(0xabcdef01l)) == (wxUint64(0x12345678l) << 32) + wxUint64(0xabcdef01l) );
    CPPUNIT_ASSERT( TestMultiRW<wxInt64>(ValuesI64, &wxDataOutputStream::Write64, &wxDataInputStream::Read64).IsOk() );
    CPPUNIT_ASSERT( TestMultiRW<wxUint64>(ValuesUI64, &wxDataOutputStream::Write64, &wxDataInputStream::Read64).IsOk() );
}