本文整理汇总了C++中SerialCommand::get_type方法的典型用法代码示例。如果您正苦于以下问题:C++ SerialCommand::get_type方法的具体用法?C++ SerialCommand::get_type怎么用?C++ SerialCommand::get_type使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SerialCommand
的用法示例。
在下文中一共展示了SerialCommand::get_type方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(void)
{
bool cmd_ok = false;
wdt_enable(WDTO_8S);
// ADC enable; prescaler: 128 (156 KHz @ 20MHz)
ADCSRA |= (_BV(ADEN) | _BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0));
DDRC |= _BV(DDC0); // LED:OUTPUT
// NLOCK: locked
DDRC |= _BV(DDC2); // OUTPUT
PORTC &= ~_BV(PORTC2); // LOW
#ifdef DEBUG
int m = DEBUG_CMD_DELAY; // ms
fdevopen(&serial_putc, 0); // open the stdout and stderr streams
#endif
sys_serial.begin(57600);
IF_DEBUG(printf_P(PSTR("BOOT\r\n")));
// initiate a sync with the daemon after boot
// there is a 1:65536 chance that sync will not be lost
// the daemon will initialize the device by the command
cmd.set(CMD_COMMON, COMMON_RESET, 0, 0);
common_device.confirm_boot(&cmd);
//cmd.reset(); // look to the SerialCommand::read
sys_log.begin();
SPI.begin();
if (radio.begin()) {
network.begin(RF24_CHANEL, rx_node);
nrf_device.setup(&network);
}
while(true)
{
wdt_reset();
// CMD_NRF_FORWARD
if (nrf_device.read(&cmd)) {
if (!nrf_device.run(&cmd)) cmd.send_header(-1);
//cmd.reset();
}
// CMD_RNG_SEND
for (int i = 0; i < WDT_BITS_PER_CYCLE; i++) {
if (rng_device.read(&cmd)) {
if (!rng_device.run(&cmd)) cmd.send_header(-1);
//cmd.reset();
}
}
// watchdog trigger
wdt_device.update();
#ifdef DEBUG
if (--m <= 0) {
m = DEBUG_CMD_DELAY;
//cmd.set(CMD_COMMON, 1, 1460792071, 0); // look to the SerialCommand::read
//sys_log.write(sys_time.now(), LOG_BOOT);
}
//_delay_ms(1);
#endif
// serial commands
if (cmd.read()) {
#ifdef DEBUG
blink_once();
#endif
cmd_ok = false;
switch (cmd.get_type()) {
case CMD_COMMON:
cmd_ok = common_device.run(&cmd);
break;
case CMD_WDT:
cmd_ok = wdt_device.run(&cmd);
break;
case CMD_RNG:
cmd_ok = rng_device.run(&cmd);
break;
case CMD_NRF:
cmd_ok = nrf_device.run(&cmd);
break;
default:
break;
}
if (!cmd_ok) cmd.send_header(-1);
//cmd.reset();
}
} // while(true)
sys_serial.end();
return 0;
} // main