示例#1
0
uchar   usbFunctionSetup(uchar data[8])
{
	usbRequest_t    *rq = (void *)data;
	switch (rq->bRequest) 
	{
	case RQ_SET_CONFIG:
		rf24_init(g_radio);
		rf24_enable_dynamic_payloads(g_radio);
		rf24_set_channel(g_radio,   rq->wValue.bytes[0]);
		rf24_set_data_rate(g_radio, rq->wValue.bytes[1]);
		rf24_set_pa_level(g_radio,  rq->wIndex.bytes[0]);
		break;
	case RQ_OPEN_PIPES:
		
		break;
	case RQ_LISTEN:
		if (rq->wValue.bytes[0]) {
			rf24_open_reading_pipe(g_radio, 1, local_addr);
			rf24_start_listening(g_radio);
		} else {
			rf24_stop_listening(g_radio);
			rf24_open_writing_pipe(g_radio, remote_addr);
		}
		break;
	case RQ_READ:
	{
		uint8_t pipe;
		uint8_t retries=50;
		uint8_t len =0; 
		do { 
			if (rf24_available(g_radio, &pipe)) {
				PORTC ^= 1<<2;
				len = rf24_get_dynamic_payload_size(g_radio);
				have_moar = !rf24_read(g_radio, msg, len);
				usbMsgPtr = msg;
				return len;
			}
			delay_ms(10);
		} while (retries--);
		
	}
		return 0;	
		break;
		
	case RQ_NOP:
		/* Shit out dbg buffer */
		usbMsgPtr = msg;
		return strlen(msg)+1;
		break;
	}
	last_rq = rq->bRequest;
	rq_len = rq->wLength.word;
	pos = 0;
	return USB_NO_MSG;		

}
示例#2
0
文件: main.c 项目: skiselev/rf24-qmsi
int main()
{
	uint8_t payload[3];

	QM_PRINTF("Simple nRF24L01 receive example\r\n");

#if defined(RF24_SPI_MULTIBYTE)
	QM_PRINTF("Using multibyte SPI transfers\r\n");
#else
	QM_PRINTF("Using single byte SPI transfers\r\n");
#endif

	if (rf24_init()) {
		QM_PRINTF("Failed to initialize nRF24L01\r\n");
	} else {
		QM_PRINTF("Initialized nRF24L01 radio. ");
		if (rf24_is_plus()) {
			QM_PRINTF("Detected nRF24L01+\r\n");
		} else {
			QM_PRINTF("Detected nRF24L01\r\n");
		}
	}


    rf24_set_retries(15,15);

    rf24_open_reading_pipe_uint64(0, 0xAA55AA55AA);

    rf24_start_listening();

    clk_sys_udelay(1000);

    while(1) {

    	if (rf24_available()) {
    		rf24_read(payload, 3);

    		QM_PRINTF("Received data ... %d,%d,%d\r\n",payload[0],payload[1],payload[2]);

#if !defined (RF24_MINIMAL)
    		rf24_print_details();
#endif
    	}
    }

    return 0;
}