static int rd_set_mode(int mode) { int result; /* Get current radio mode */ if((radio_state == RADIO_UNKNOWN) || (radio_state == RADIO_PWD)) { result = RADIO_MODE_OFF; } else { result = RADIO_MODE_ON; } switch(mode) { case RADIO_MODE_ON: DEBUG("Enabling rx mode\n"); cc110x_init_interrupts(); /* Enable interrupts */ cc110x_setup_rx_mode(); /* Set chip to desired mode */ break; case RADIO_MODE_OFF: cc110x_disable_interrupts(); /* Disable interrupts */ cc110x_switch_to_pwd(); /* Set chip to power down mode */ break; case RADIO_MODE_GET: /* do nothing, just return current mode */ default: /* do nothing */ break; } /* Return previous mode */ return result; }
/*------------------------------------------------------------------------------------*/ static void powerdown(transceiver_type_t t) { switch (t) { #if (defined(MODULE_CC110X) || defined(MODULE_CC110X_LEGACY)) case TRANSCEIVER_CC1100: cc110x_switch_to_pwd(); break; #endif #ifdef MODULE_MC1322X case TRANSCEIVER_MC1322X: maca_off(); break; #endif #ifdef MODULE_NATIVENET case TRANSCEIVER_NATIVE: nativenet_powerdown(); break; #endif default: break; } }
int _cc110x_set_state(netdev_t *dev, netdev_state_t state) { if (dev != &cc110x_dev) { return -ENODEV; } switch (state) { case NETDEV_STATE_POWER_OFF: gpio_irq_disable(CC110X_GDO2); cc110x_switch_to_pwd(); break; case NETDEV_STATE_RX_MODE: gpio_irq_enable(CC110X_GDO2); cc110x_setup_rx_mode(); break; default: return -ENOTSUP; } return 0; }