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;
}
Example #2
0
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();
  }

}
Example #3
0
/**@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;
  }
Example #5
0
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
  }
Example #6
0
/**@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;
    }
  }
Example #8
0
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(&parameters, NULL, NULL); // root namespace
    parameter_string_declare_with_default(&board_name,
                                          &parameters,
                                          "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(&parameters, "/config.msgpack");
    chprintf(stdout, "current parameters:");
    parameter_print(&parameters, (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;
      }
    }
  }
Example #10
0
/*
 * Called when the user alarm has expired
 */
void on_user_alarm_expire()
{
    motor_on();
    led_start();
}