void start_game(void) { char* string1 = "Plant Shooter"; char* string2 = "ESAT vs Zombies"; uint8_t string_length = 0; gfx_mono_draw_string(string1, (128-strlen(string1)*6)/2, 12, &sysfont); string_length = strlen(string1)*6; led_start(); gfx_mono_draw_filled_rect((128-string_length)/2, 12, string_length, 8, GFX_PIXEL_CLR); gfx_mono_draw_string(string2, (128-strlen(string2)*6)/2, 12, &sysfont); string_length = strlen(string2)*6; led_start(); gfx_mono_draw_filled_rect((128-string_length)/2, 12, string_length, 8, GFX_PIXEL_CLR); gfx_mono_draw_string(string1, (128-strlen(string1)*6)/2, 7, &sysfont); gfx_mono_draw_string(string2, (128-strlen(string2)*6)/2, 18, &sysfont); led_start(); gfx_mono_draw_filled_rect(0, 0, 128, 32, GFX_PIXEL_CLR); state = 2; }
int main (void) { //we re not in a power critical environment //but nevertheless switch off everything power_all_disable(); //reset ports & pins DDRB = 0; PORTB = 0; DDRA = 0; PORTB = 0; //Start everything led_init(); led_on(); uint8_t result = accelerator_init(); if (result==0) { led_off(); led_start(); //and let the games begin sei(); } while (1) { led_calculate(); } }
/**@brief Start advertising. */ static void advertising_start(void) { uint32_t err_code; err_code = sd_ble_gap_adv_start(&m_adv_params); APP_ERROR_CHECK(err_code); led_start(); }
void diag_initialise(void) { led_set(OVMS_LED_GRN,NET_LED_ERRDIAGMODE); led_set(OVMS_LED_RED,NET_LED_ERRDIAGMODE); led_start(); net_timeout_ticks = 0; net_timeout_goto = 0; net_puts_rom("\x1B[2J\x1B[01;01H\r# OVMS DIAGNOSTICS MODE\r\n\n"); orig_canwrite = sys_features[FEATURE_CANWRITE]; canwrite_state = -1; }
void diag_initialise(void) { led_set(OVMS_LED_GRN,OVMS_LED_ON); led_set(OVMS_LED_RED,OVMS_LED_OFF); led_start(); net_timeout_ticks = 0; net_timeout_goto = 0; net_puts_rom("\x1B[2J\x1B[01;01H\r# OVMS DIAGNOSTICS MODE\n\n"); #ifdef OVMS_CAR_TESLAROADSTER orig_canwrite = sys_features[FEATURE_CANWRITE]; canwrite_state = -1; #endif //OVMS_CAR_TESLAROADSTER }
/**@brief Function for starting advertising. */ static void advertising_start(void) { uint32_t err_code; // Initialize advertising parameters (used when starting advertising). memset(&m_adv_params, 0, sizeof(m_adv_params)); m_adv_params.type = BLE_GAP_ADV_TYPE_ADV_IND; m_adv_params.p_peer_addr = NULL; // Undirected advertisement. m_adv_params.fp = BLE_GAP_ADV_FP_ANY; m_adv_params.interval = APP_ADV_INTERVAL; m_adv_params.timeout = 0; err_code = sd_ble_gap_adv_start(&m_adv_params); APP_ERROR_CHECK(err_code); led_start(); }
void main(void) { unsigned char x, y; // DEBUG / QA stats: get last reset reason: x = (~RCON) & 0x1f; if (STKPTRbits.STKFUL) x += 32; if (STKPTRbits.STKUNF) x += 64; // ...clear RCON: RCONbits.NOT_BOR = 1; // b0 = 1 = Brown Out Reset RCONbits.NOT_POR = 1; // b1 = 2 = Power On Reset //RCONbits.NOT_PD = 1; // b2 = 4 = Power Down detection //RCONbits.NOT_TO = 1; // b3 = 8 = watchdog TimeOut occured RCONbits.NOT_RI = 1; // b4 = 16 = Reset Instruction if (x == 3) // 3 = normal Power On { debug_crashreason = 0; debug_crashcnt = 0; #ifdef OVMS_LOGGINGMODULE logging_initialise(); #endif } else { debug_crashreason = x | 0x80; // 0x80 = keep checkpoint until sent to server debug_crashcnt++; } CHECKPOINT(0x20) for (x = 0; x < FEATURES_MAP_PARAM; x++) sys_features[x] = 0; // Turn off the features // The top N features are persistent for (x = FEATURES_MAP_PARAM; x < FEATURES_MAX; x++) { sys_features[x] = atoi(par_get(PARAM_FEATURE_S + (x - FEATURES_MAP_PARAM))); } // Make sure cooldown is off car_coolingdown = -1; // Port configuration inputs_initialise(); TRISB = 0xFE; // Timer 0 enabled, Fosc/4, 16 bit mode, prescaler 1:256 // This gives us one tick every 51.2uS before prescale (13.1ms after) T0CON = 0b10000111; // @ 5Mhz => 51.2uS // Initialisation... led_initialise(); par_initialise(); vehicle_initialise(); net_initialise(); CHECKPOINT(0x21) // Startup sequence... // Holding the RED led on, pulse out the firmware version on the GREEN led delay100(10); // Delay 1 second led_set(OVMS_LED_RED, OVMS_LED_ON); led_set(OVMS_LED_GRN, OVMS_LED_OFF); led_start(); delay100(10); // Delay 1.0 seconds led_set(OVMS_LED_GRN, ovms_firmware[0]); led_start(); delay100(35); // Delay 3.5 seconds ClrWdt(); // Clear Watchdog Timer led_set(OVMS_LED_GRN, ovms_firmware[1]); led_start(); delay100(35); // Delay 3.5 seconds ClrWdt(); // Clear Watchdog Timer led_set(OVMS_LED_GRN, ovms_firmware[2]); led_start(); delay100(35); // Delay 3.5 seconds ClrWdt(); // Clear Watchdog Timer led_set(OVMS_LED_GRN, OVMS_LED_OFF); led_set(OVMS_LED_RED, OVMS_LED_OFF); led_start(); delay100(10); // Delay 1 second ClrWdt(); // Clear Watchdog Timer // Setup ready for the main loop led_set(OVMS_LED_GRN, OVMS_LED_OFF); led_start(); #ifdef OVMS_HW_V2 car_12vline = inputs_voltage()*10; car_12vline_ref = 0; #endif #ifdef OVMS_ACCMODULE acc_initialise(); #endif // Proceed to main loop y = 0; // Last TMR0H while (1) // Main Loop { CHECKPOINT(0x22) if ((vUARTIntStatus.UARTIntRxError) || (vUARTIntStatus.UARTIntRxOverFlow)) net_reset_async(); while (!vUARTIntStatus.UARTIntRxBufferEmpty) { CHECKPOINT(0x23) net_poll(); } CHECKPOINT(0x24) vehicle_idlepoll(); ClrWdt(); // Clear Watchdog Timer x = TMR0L; if (TMR0H >= 0x4c) // Timout ~1sec (actually 996ms) { TMR0H = 0; TMR0L = 0; // Reset timer CHECKPOINT(0x25) net_ticker(); CHECKPOINT(0x26) vehicle_ticker(); #ifdef OVMS_LOGGINGMODULE CHECKPOINT(0x27) logging_ticker(); #endif #ifdef OVMS_ACCMODULE CHECKPOINT(0x28) acc_ticker(); #endif } else if (TMR0H != y) { if ((TMR0H % 0x04) == 0) { CHECKPOINT(0x29) net_ticker10th(); CHECKPOINT(0x2A) vehicle_ticker10th(); CHECKPOINT(0x2B) } y = TMR0H; } }
int main(void) { halInit(); chSysInit(); timestamp_stm32_init(); board_io_pwr_en(true); board_sensor_pwr_en(true); error_init(); // standard output sdStart(&UART_CONN1, NULL); stdout = (BaseSequentialStream*)&UART_CONN1; chprintf(stdout, "\n\n\n"); log_init(); log_handler_register(&log_handler_stdout, LOG_LVL_DEBUG, log_handler_stdout_cb); log_info("=== boot ==="); led_start(); // mount SD card board_power_cycle_sdcard(); sdcStart(&SDCD1, NULL); sdcard_mount(); static char logdir[100]; if (sdcard_find_next_file_name_with_prefix("/", "log_", logdir, sizeof(logdir)) < 0) { log_error("could not determine log file directory"); } FRESULT res = f_mkdir(logdir); if (!(res == FR_OK || res == FR_EXIST)) { log_warning("could not create log directory %s", logdir); } size_t logdir_strlen = strlen(logdir); if (sdcard_is_mounted()) { // add .txt to logdir strncpy(&logdir[logdir_strlen], "/log.txt", sizeof(logdir) - logdir_strlen); logdir[sizeof(logdir)-1] = '\0'; sdcard_log_handler_init(logdir, LOG_LVL_INFO); logdir[logdir_strlen] = '\0'; // reset log dir string } log_boot_message(); // initialization parameter_namespace_declare(¶meters, NULL, NULL); // root namespace parameter_string_declare_with_default(&board_name, ¶meters, "name", board_name_p_buf, sizeof(board_name_p_buf), "ins-board"); msgbus_init(&bus); services_init(); // load parameters from SD card log_info("loading parameters from sd card"); sdcard_read_parameter(¶meters, "/config.msgpack"); chprintf(stdout, "current parameters:"); parameter_print(¶meters, (parameter_printfn_t)chprintf, stdout); // UART driver io_setup(); // USB serial driver sduObjectInit(&SDU1); sduStart(&SDU1, &serusbcfg); usbDisconnectBus(serusbcfg.usbp); chThdSleepMilliseconds(100); usbStart(serusbcfg.usbp, &usbcfg); usbConnectBus(serusbcfg.usbp); // start all services services_start(logdir); // shellInit(); // char buf[STREAM_DEV_STR_SIZE]; // parameter_string_get(&shell_port, buf, sizeof(buf)); // BaseSequentialStream* shell_dev = get_base_seq_stream_device_from_str(buf); // static thread_t *shelltp = NULL; // static ShellConfig shell_cfg; // shell_cfg.sc_channel = shell_dev; // shell_cfg.sc_commands = shell_commands; chThdSleepMilliseconds(500); while (true) { // if (shelltp == NULL && shell_dev != NULL) { // static THD_WORKING_AREA(shell_wa, 2048); // shelltp = shellCreateStatic(&shell_cfg, shell_wa, sizeof(shell_wa), THD_PRIO_SHELL); // } else if (shelltp != NULL && chThdTerminatedX(shelltp)) { // shelltp = NULL; // } log_debug("VCC %f", analog_get_vcc()); log_debug("Temp %f", analog_get_cpu_temp()); log_debug("V_DC %f", analog_get_vdc()); log_debug("CONN2_TX %f", analog_get_voltage(ANALOG_CH_CONN2_TX)); log_debug("CONN2_RX %f", analog_get_voltage(ANALOG_CH_CONN2_RX)); log_debug("CONN3_TX %f", analog_get_voltage(ANALOG_CH_CONN3_TX)); log_debug("CONN3_RX %f", analog_get_voltage(ANALOG_CH_CONN3_RX)); chThdSleepMilliseconds(500); } }
void main(void) { unsigned char x,y; char *p; for (x=0;x<FEATURES_MAP_PARAM;x++) sys_features[x]=0; // Turn off the features // The top N features are persistent for (x=FEATURES_MAP_PARAM;x<FEATURES_MAX;x++) { sys_features[x] = atoi(par_get(PARAM_FEATURE_S+(x-FEATURES_MAP_PARAM))); } PORTA = 0x00; // Initialise port A ADCON1 = 0x0F; // Switch off A/D converter TRISA = 0xFF; TRISB = 0xFE; // Timer 0 enabled, Fosc/4, 16 bit mode, prescaler 1:256 // This gives us one tick every 51.2uS before prescale (13.1ms after) T0CON = 0b10000111; // @ 5Mhz => 51.2uS // Initialisation... led_initialise(); par_initialise(); can_initialise(); net_initialise(); // Startup sequence... // Holding the RED led on, pulse out the firmware version on the GREEN led delay100(10); // Delay 1 second led_set(OVMS_LED_RED,OVMS_LED_ON); led_set(OVMS_LED_GRN,OVMS_LED_OFF); led_start(); delay100(10); // Delay 1.0 seconds led_set(OVMS_LED_GRN, ovms_firmware[0]); led_start(); delay100(35); // Delay 3.5 seconds ClrWdt(); // Clear Watchdog Timer led_set(OVMS_LED_GRN, ovms_firmware[1]); led_start(); delay100(35); // Delay 3.5 seconds ClrWdt(); // Clear Watchdog Timer led_set(OVMS_LED_GRN, ovms_firmware[2]); led_start(); delay100(35); // Delay 3.5 seconds ClrWdt(); // Clear Watchdog Timer led_set(OVMS_LED_GRN, OVMS_LED_OFF); led_set(OVMS_LED_RED, OVMS_LED_OFF); led_start(); delay100(10); // Delay 1 second ClrWdt(); // Clear Watchdog Timer // Setup ready for the main loop led_set(OVMS_LED_GRN,NET_LED_WAKEUP); led_start(); // Proceed to main loop y = 0; // Last TMR0H while (1) // Main Loop { if((vUARTIntStatus.UARTIntRxError) || (vUARTIntStatus.UARTIntRxOverFlow)) net_reset_async(); if (! vUARTIntStatus.UARTIntRxBufferEmpty) net_poll(); can_idlepoll(); ClrWdt(); // Clear Watchdog Timer x = TMR0L; if (TMR0H >= 0x4c) // Timout ~1sec (actually 996ms) { TMR0H = 0; TMR0L = 0; // Reset timer net_ticker(); can_ticker(); } else if (TMR0H != y) { if ((TMR0H % 0x04)==0) { net_ticker10th(); can_ticker10th(); } y = TMR0H; } } }
/* * Called when the user alarm has expired */ void on_user_alarm_expire() { motor_on(); led_start(); }