static void at_s(void) { __pdata uint8_t sreg; // get the register number first idx = 3; at_parse_number(); sreg = at_num; // validate the selected sreg if (sreg >= PARAM_MAX) { at_error(); return; } switch (at_cmd[idx]) { case '?': at_num = param_get(sreg); printf("%lu\n", at_num); return; case '=': if (sreg > 0) { idx++; at_parse_number(); if (param_set(sreg, at_num)) { at_ok(); return; } } break; } at_error(); }
static void at_plus(void) { #ifdef BOARD_rfd900a __pdata uint8_t creg; // get the register number first idx = 4; at_parse_number(); creg = at_num; switch (at_cmd[3]) { case 'P': // AT+P=x set power level pwm to x immediately if (at_cmd[4] != '=') { break; } idx = 5; at_parse_number(); PCA0CPH3 = at_num & 0xFF; radio_set_diversity(false); at_ok(); return; case 'C': // AT+Cx=y write calibration value switch (at_cmd[idx]) { case '?': at_num = calibration_get(creg); printf("%lu\n",at_num); return; case '=': idx++; at_parse_number(); if (calibration_set(creg, at_num&0xFF)) { at_ok(); } else { at_error(); } return; } break; case 'L': // AT+L lock bootloader area if all calibrations written if (calibration_lock()) { at_ok(); } else { at_error(); } return; } #endif //BOARD_rfd900a at_error(); }
static void at_ampersand(void) { switch (at_cmd[3]) { case 'F': param_default(); at_ok(); break; case 'W': param_save(); at_ok(); break; case 'U': if (!strcmp(at_cmd + 4, "PDATE")) { // force a flash error volatile char x = *(__code volatile char *)0xfc00; for (;;) ; } at_error(); break; case 'P': tdm_change_phase(); break; case 'T': // enable test modes if (!strcmp(at_cmd + 4, "")) { // disable all tests at_testmode = 0; } else if (!strcmp(at_cmd + 4, "=RSSI")) { // display RSSI stats at_testmode ^= AT_TEST_RSSI; } else if (!strcmp(at_cmd + 4, "=TDM")) { // display TDM debug at_testmode ^= AT_TEST_TDM; } else { at_error(); } break; default: at_error(); break; } }
void at_command(void) { // require a command with the AT prefix if (at_cmd_ready) { if ((at_cmd_len >= 2) && (at_cmd[0] == 'R') && (at_cmd[1] == 'T')) { // remote AT command - send it to the tdm // system to send to the remote radio tdm_remote_at(); at_cmd_len = 0; at_cmd_ready = false; return; } if ((at_cmd_len >= 2) && (at_cmd[0] == 'A') && (at_cmd[1] == 'T')) { // look at the next byte to determine what to do switch (at_cmd[2]) { case '\0': // no command -> OK at_ok(); break; case '&': at_ampersand(); break; case '+': at_plus(); break; case 'I': at_i(); break; case 'P': at_p(); break; case 'O': // O -> go online (exit command mode) at_plus_counter = ATP_COUNT_1S; at_mode_active = 0; break; case 'S': at_s(); break; case 'Z': // generate a software reset RSTSRC |= (1 << 4); for (;;) ; default: at_error(); } } // unlock the command buffer at_cmd_len = 0; at_cmd_ready = false; } }
static void at_i(void) { switch (at_cmd[3]) { case '\0': case '0': printf("%s\n", g_banner_string); return; case '1': printf("%s\n", g_version_string); return; case '2': printf("%u\n", BOARD_ID); break; case '3': printf("%u\n", g_board_frequency); break; case '4': printf("%u\n", g_board_bl_version); return; case '5': { register enum ParamID id; register uint8_t start = 0; register uint8_t end = PARAM_MAX-1; if (at_cmd[4] == ':' && isdigit(at_cmd[5])) { idx = 5; at_parse_number(); start = at_num; if (at_cmd[idx] == ':' && isdigit(at_cmd[idx+1])) { idx++; at_parse_number(); end = at_num; } } // convenient way of showing all parameters for (id = start; id <= end; id++) { printf("S%u:%s=%lu\n", (unsigned)id, param_name(id), (unsigned long)param_get(id)); } return; } case '6': tdm_report_timing(); return; case '7': tdm_show_rssi(); return; default: at_error(); return; } }
void corange_init(const char* core_assets_path) { /* Attach signal handlers */ signal(SIGABRT, corange_signal); signal(SIGFPE, corange_signal); signal(SIGILL, corange_signal); signal(SIGINT, corange_signal); signal(SIGSEGV, corange_signal); signal(SIGTERM, corange_signal); logout = fopen("output.log", "w"); at_error(corange_error); at_warning(corange_warning); at_debug(corange_debug); /* Starting Corange */ debug("Starting Corange..."); /* Asset Manager */ debug("Creating Asset Manager..."); debug("Core Assets At '%s' ...", core_assets_path); asset_init(); asset_add_path_variable(P("$CORANGE"), P(core_assets_path)); asset_handler(renderable, "bmf", bmf_load_file, renderable_delete); asset_handler(renderable, "obj", obj_load_file, renderable_delete); asset_handler(renderable, "smd", smd_load_file, renderable_delete); asset_handler(renderable, "ply", ply_load_file, renderable_delete); asset_handler(skeleton, "skl", skl_load_file, skeleton_delete); asset_handler(animation, "ani", ani_load_file, animation_delete); asset_handler(cmesh, "col", col_load_file, cmesh_delete); asset_handler(terrain, "raw", raw_load_file, terrain_delete); asset_handler(texture, "bmp", bmp_load_file, texture_delete); asset_handler(texture, "tga", tga_load_file, texture_delete); asset_handler(texture, "dds", dds_load_file, texture_delete); asset_handler(texture, "lut", lut_load_file, texture_delete); asset_handler(texture, "acv", acv_load_file, texture_delete); asset_handler(shader, "vs" , vs_load_file, shader_delete); asset_handler(shader, "fs" , fs_load_file, shader_delete); asset_handler(shader, "gs" , gs_load_file, shader_delete); asset_handler(shader, "tcs" , tcs_load_file, shader_delete); asset_handler(shader, "tes" , tes_load_file, shader_delete); asset_handler(config, "cfg", cfg_load_file, config_delete); asset_handler(lang, "lang", lang_load_file, lang_delete); asset_handler(font, "fnt", font_load_file, font_delete); asset_handler(material, "mat", mat_load_file, material_delete); asset_handler(effect, "effect" , effect_load_file, effect_delete); asset_handler(sound, "wav", wav_load_file, sound_delete); asset_handler(music, "ogg", ogg_load_file, music_delete); asset_handler(music, "mp3", mp3_load_file, music_delete); /* Entity Manager */ debug("Creating Entity Manager..."); entity_init(); entity_handler(static_object, static_object_new, static_object_delete); entity_handler(animated_object, animated_object_new, animated_object_delete); entity_handler(physics_object, physics_object_new, physics_object_delete); entity_handler(instance_object, instance_object_new, instance_object_delete); entity_handler(camera, camera_new, camera_delete); entity_handler(light, light_new, light_delete); entity_handler(landscape, landscape_new, landscape_delete); entity_handler(particles, particles_new, particles_delete); /* UI Manager */ debug("Creating UI Manager..."); ui_init(); ui_handler(ui_rectangle, ui_rectangle_new, ui_rectangle_delete, ui_rectangle_event, ui_rectangle_update, ui_rectangle_render); ui_handler(ui_text, ui_text_new, ui_text_delete, ui_text_event, ui_text_update, ui_text_render); ui_handler(ui_spinner, ui_spinner_new, ui_spinner_delete, ui_spinner_event, ui_spinner_update, ui_spinner_render); ui_handler(ui_button, ui_button_new, ui_button_delete, ui_button_event, ui_button_update, ui_button_render); ui_handler(ui_textbox, ui_textbox_new, ui_textbox_delete, ui_textbox_event, ui_textbox_update, ui_textbox_render); ui_handler(ui_browser, ui_browser_new, ui_browser_delete, ui_browser_event, ui_browser_update, ui_browser_render); ui_handler(ui_toast, ui_toast_new, ui_toast_delete, ui_toast_event, ui_toast_update, ui_toast_render); ui_handler(ui_dialog, ui_dialog_new, ui_dialog_delete, ui_dialog_event, ui_dialog_update, ui_dialog_render); ui_handler(ui_listbox, ui_listbox_new, ui_listbox_delete, ui_listbox_event, ui_listbox_update, ui_listbox_render); ui_handler(ui_option, ui_option_new, ui_option_delete, ui_option_event, ui_option_update, ui_option_render); ui_handler(ui_slider, ui_slider_new, ui_slider_delete, ui_slider_event, ui_slider_update, ui_slider_render); /* Graphics Manager */ debug("Creating Graphics Manager..."); graphics_init(); /* Audio Manager */ debug("Creating Audio Manager..."); audio_init(); /* Joystick Manager */ debug("Creating Joystick Manager..."); joystick_init(); /* Network Manager */ debug("Creating Network Manager..."); net_init(); debug("Finished!"); }