def test_datacall_callback(): test_datacall_module() # 注册回调中断 ret = dataCall.setCallback(callback) if ret == 0x00: print("set Callback has success") net.setModemFun(4) # 进入飞行模式 time.sleep_ms(1000) net.setModemFun(1) # 重新进入正常模式 print("test_datacall_callback funcation has exited") pass
def _handle_cmd(self, key, config): try: if key == 'gpio': io_level_list = self.bs_gpio.read_all() io_name_list = self.bs_gpio.get_io_name_list() for gpio_key in config.keys(): if gpio_key not in io_name_list: continue level = self.bs_config.get_int_value(config, gpio_key) if level is not None: id = self.bs_gpio.get_id_by_name(gpio_key) self.bs_gpio.write(id, level) io_level_list[gpio_key] = level self._update_gpio_status(io_level_list) elif key.startswith('pwm'): id = self.bs_pwm.get_id_by_name(key) is_breathe = self.bs_config.get_int_value(config, "breathe") frequency = self.bs_config.get_int_value(config, "frequency") duty = self.bs_config.get_float_value(config, "duty") if is_breathe: self.bs_pwm.start_breathe(id, frequency) else: self.bs_pwm.start_once(id, frequency, duty) elif key == 'system': modemFun = self.bs_config.get_int_value(config, "modemFun") if modemFun == 4: bluestone_common.BluestoneCommon.set_network_state( modemFun) _uart_log.info("Enter airplane mode") net.setModemFun(modemFun) utime.sleep_ms(2000) elif modemFun == 1: _uart_log.info("Exit airplane mode") net.setModemFun(modemFun) utime.sleep_ms(2000) elif key == 'fota': mode = self.bs_config.get_int_value(config, "mode") if mode == 0: url_list = self.bs_config.get_value(config, "url") self.bs_fota.start_fota_app(url_list) elif mode == 1: url = self.bs_config.get_value(config, "url") self.bs_fota.start_fota_firmware(url) except Exception as err: _uart_log.error( "Cannot handle command for uart, the error is {}".format(err))
def check_network(): while True: try: utime.sleep_ms(2000) #system_log.info("Check network connection") checknet.wait_network_connected() retry_count = 0 except Exception as err: retry_count += 1 system_log.error( "Cannot connect to network, will retry it after {} millseconds for {} time" .format(2000, retry_count)) if retry_count >= 10: net.setModemFun(4) #进入飞行模式 system_log.info("Enter airplane mode") utime.sleep_ms(2000) net.setModemFun(1) #退出飞行模式 system_log.info("Exit airplane mode") utime.sleep_ms(2000)
if __name__ == '__main__': ''' 手动运行本例程时,可以去掉该延时,如果将例程文件名改为main.py,希望开机自动运行时,需要加上该延时, 否则无法从CDC口看到下面的 poweron_print_once() 中打印的信息 ''' utime.sleep(5) checknet.poweron_print_once() ''' 如果用户程序包含网络相关代码,必须执行 wait_network_connected() 等待网络就绪(拨号成功); 如果是网络无关代码,可以屏蔽 wait_network_connected() 【本例程必须保留下面这一行!】 ''' checknet.wait_network_connected() # 注册回调函数 dataCall.setCallback(nw_cb) # 进入飞行模式模拟触发 net.setModemFun(4) utime.sleep(2) # 退出飞行模式再次模拟触发回调 net.setModemFun(1) while 1: if state: pass else: break