Пример #1
0
int advp_scan(void)
{
    int error;
    systime_t time1;
    systime_t time2;
    systime_t sleep;
    bg_param_t conf;

    //prepare a background scan procedure
    data_proc_conf.pack_class = BACKGROUND_CLASS;
    data_proc_config(&data_proc_conf);
    //scan the packet
    error = advp_scan_bg(&conf);
    if(error)
        return error;

    time1 = chTimeNow();

    //prepare a foreground scan procedure
    data_proc_conf.pack_class = FOREGROUND_CLASS;
    data_proc_conf.channel = conf.channel;
    data_proc_config(&data_proc_conf);

    time2 = chTimeNow();

    sleep = d7_ti_to_systime(conf.time) - (time2 - time1) - SAFE_SLEEP_WINDOW - RX_TIME;
    //sleep until the time to receive the packet is reached
    chThdSleepMilliseconds(sleep);

    //scan the foreground packet
    error = data_listen();

    if(error < 0) return error - 10;
    else return error;
}
Пример #2
0
int advp_scan_bg(bg_param_t *advp_conf)
{
    uint8_t frame[FG_FRAME_SIZE];
    int error;

    error = data_listen();
    if(error < 0)
        return error;

    error = data_get_frame(frame,FG_FRAME_SIZE);
    if(error < 0)
        return error -5;

    bg_get_advp(frame,advp_conf);
    if(advp_conf->protocol != 0xF0) return BG_BAD_PROTOCOL;
    else return 0;
}
Пример #3
0
size_t device::send_data(const std::vector<unsigned char>& data_buf,
			    int device_number,
			    int channel )
{
    listen( device_number );
    data_listen( channel );

    size_t sent = 0;
    try
    {
	sent = send_to_bus(data_buf);
    }
    catch (raspbiec_error &e)
    {
	unlisten();
	throw;
    }
    unlisten();


    return sent;
}