Example #1
0
static void cmd_led(BaseSequentialStream *chp, int argc, char *argv[]) {
    const char led_usage[] = "usage: led <led_state>\n\r\tled_state: 0=OFF 1=ON t=TOGGLE\n\r";
    const char led_toggle_text[] = "led TOGGLE\n\r";
    if((argc > 0) && (argc < 2)){
        if(argv[0][0] == '1'){
            palSetPad(GPIOA,3);
            chprintf(chp, "led ON\n\r");
        } else if(argv[0][0] == '0'){
            palClearPad(GPIOA,3);
            chprintf(chp, "led OFF\n\r");
        } else if(argv[0][0] == 't'){
            palTogglePad(GPIOA,3);
            chprintf(chp, led_toggle_text);
        } else if(strcmp("-h",argv[0])==0){
            chprintf(chp, led_usage);
        }else {
            chprintf(chp, "%c is not a valid value for led!\n\r",argv[1][0]);
            chprintf(chp, led_usage);
        }
    } else if(argc == 0){
        palTogglePad(GPIOA,3);
        chprintf(chp, led_toggle_text);
    }else {
        if(argc >= 2){chprintf(chp, "too many arguments!\n\r");}
        //chprintf(chp, led_usage);
    }
}
Example #2
0
static msg_t ledsThread( void *arg )
{
    (void)arg;
    chRegSetThreadName( "ld" );
    while ( 1 )
    {
        static uint32_t arg;
    	chMtxLock( &mutex );
            arg = value;
            if ( arg & 1 )
                palTogglePad( LED_0_PORT, LED_0_PIN );
            else
            	palClearPad( LED_0_PORT, LED_0_PIN );

            if ( arg & 2 )
                palTogglePad( LED_1_PORT, LED_1_PIN );
            else
            	palClearPad( LED_1_PORT, LED_1_PIN );
        chMtxUnlock();
        chThdSleepMilliseconds( DURATION_MS );
    	processDfu( DURATION_MS );
    }

    return 0;
}
Example #3
0
/*
 * data Received Callback
 * It toggles an LED based on the first received character.
 */
void dataReceived(USBDriver *usbp, usbep_t ep){
    USBOutEndpointState *osp = usbp->epc[ep]->out_state;
    (void) usbp;
    (void) ep;

    if(osp->rxcnt){
        switch(receiveBuf[0]){
            case '1':
                palTogglePad(GPIOD, GPIOD_LED3);
                break;
            case '2':
                palTogglePad(GPIOD, GPIOD_LED4);
                break;
            case '3':
                palTogglePad(GPIOD, GPIOD_LED5);
                break;
            case '4':
                palTogglePad(GPIOD, GPIOD_LED6);
                break;

        }
    }

    /*
     * Initiate next receive
     */
    usbPrepareReceive(usbp, EP_OUT, receiveBuf, OUT_PACKETSIZE);

    chSysLockFromIsr();
    usbStartReceiveI(usbp, EP_OUT);
    chSysUnlockFromIsr();
}
Example #4
0
/*
 * Handles the USB driver global events.
 */
static void usb_event(USBDriver *usbp, usbevent_t event) {
  (void) usbp;
  switch (event) {
  case USB_EVENT_RESET:
    palTogglePad(GPIOD, GPIOD_LED6);
    return;
  case USB_EVENT_ADDRESS:
    return;
  case USB_EVENT_CONFIGURED:

    /* Enables the endpoints specified into the configuration.
       Note, this callback is invoked from an ISR so I-Class functions
       must be used.*/
    chSysLockFromIsr();
    usbInitEndpointI(usbp, 1, &ep1config);
    usbInitEndpointI(usbp, 2, &ep2config);
    chSysUnlockFromIsr();
    //allow the main thread to init the transfers
    initUSB =1;
    return;
  case USB_EVENT_SUSPEND:
    return;
  case USB_EVENT_WAKEUP:
    return;
  case USB_EVENT_STALLED:
    return;
  }
  palTogglePad(GPIOD, GPIOD_LED5);
  return;
}
Example #5
0
void toggleLedsI( uint32_t arg )
{
    if ( arg & 1 )
        palTogglePad( LED_0_PORT, LED_0_PIN );
    if ( arg & 2 )
        palTogglePad( LED_1_PORT, LED_1_PIN );
}
Example #6
0
void toggleLedsImmediate( uint32_t val )
{
    if ( val & 1 )
        palTogglePad( LED_0_PORT, LED_0_PIN );
    if ( val & 2 )
        palTogglePad( LED_1_PORT, LED_1_PIN );
}
Example #7
0
File: main.c Project: 0x00f/ChibiOS
static msg_t can_rx(void *p) {
  struct can_instance *cip = p;
  EventListener el;
  CANRxFrame rxmsg;
  (void)p;
  chRegSetThreadName("receiver");
  chEvtRegister(&cip->canp->rxfull_event, &el, 0);
#if SPC5_CAN_USE_FILTERS
  rxFlag = chEvtGetAndClearFlagsI(&el);
#endif
  while(!chThdShouldTerminate()) {
    if (chEvtWaitAnyTimeout(ALL_EVENTS, MS2ST(100)) == 0)
      continue;
#if !SPC5_CAN_USE_FILTERS
    while (canReceive(cip->canp, CAN_ANY_MAILBOX,
                      &rxmsg, TIME_IMMEDIATE) == RDY_OK) {
      /* Process message.*/
      palTogglePad(PORT_D, cip->led);
    }
#else
    while (canReceive(cip->canp, rxFlag,
                       &rxmsg, TIME_IMMEDIATE) == RDY_OK) {
      /* Process message.*/
      palTogglePad(PORT_D, cip->led);
    }
#endif
  }
  chEvtUnregister(&CAND1.rxfull_event, &el);
  return 0;
}
Example #8
0
//-----------------------------------------------------------------------------
void
kuroBox_panic(int msg)
{
	(void)msg;
// this function is doing more harm than good...
#if 0 
	switch( msg )
	{
	case unknown_panic:
	default:
		{
			while(1)
			{
				palTogglePad(GPIOA, GPIOA_LED3);
				chThdSleepMilliseconds(50);async_vn_msg_t
			}			
		}
	case no_panic:
		{
			while(1)
			{
				palTogglePad(GPIOA, GPIOA_LED3);
				chThdSleepMilliseconds(1000);
			}			
		}
	}
#endif
}
Example #9
0
/**
 * @brief   Toggle LED
 * @details Toggles one of the two on-board user LEDs (0 or 1).
 *
 * @param[in] num    Which LED to toggle. Either 0 or 1.
 */
void led_toggle(int num)
{
   if (num == 0)
   {
      palTogglePad(GPIOE, GPIOE_LED0);
   }
   else if (num == 1)
   {
      palTogglePad(GPIOD, GPIOD_LED1);
   }
}
Example #10
0
void led_toggle(unsigned int led)
{
    if (led & STATUS_LED) {
        palTogglePad(GPIOB, GPIOB_STATUS_LED);
    }
    if (led & CAN1_STATUS_LED) {
        palTogglePad(GPIOB, GPIOB_CAN1_STATUS_LED);
    }
    if (led & CAN1_PWR_LED) {
        palTogglePad(GPIOA, GPIOA_CAN1_PWR_LED);
    }
}
Example #11
0
static msg_t heartBeat (void*Arg)
{
	palSetPad (GPIOB, 8);
	palClearPad (GPIOB, 7);
	printf ("\n\rHello world!\n\r");

	while (true)
	{
    	palTogglePad (GPIOB, 8);
		palTogglePad (GPIOB, 7);
		chThdSleepMilliseconds (250);
	}
}
Example #12
0
void led_toggle(int num) {
	switch (num) {
	case LED_RED:
		palTogglePad(GPIOE, 0);
		break;

	case LED_GREEN:
		palTogglePad(GPIOE, 1);
		break;

	default:
		break;
	}
}
static msg_t Thread1(void *arg) {

  (void)arg;

  chRegSetThreadName("blinker");
  while (TRUE) {
    palTogglePad(LED_GPIO, LED1);
    palTogglePad(LED_GPIO, LED2);
    palTogglePad(LED_GPIO, LED3);
    palTogglePad(LED_GPIO, LED4);
    chThdSleepMilliseconds(500);
  }
  return 0;
}
Example #14
0
static msg_t heartBeat (void*arg)
{
	chprintf ((BaseSequentialStream *)&SD2, "\n\rHello world!\n\r");

    palSetPad (GPIOB, LED1);
    palClearPad (GPIOB, LED2);

	while (true)
	{
		palTogglePad (GPIOB, LED1);
		palTogglePad (GPIOB, LED2);
		chThdSleepMilliseconds (250);
	}
}
Example #15
0
static THD_FUNCTION(Thread1, arg) {

  (void)arg;
  chRegSetThreadName("Blinker");
  while(true) {
    if(i2cOk) {
      palSetPad(GPIO_LED_RED, PIN_LED_RED); /* Off red */
      palTogglePad(GPIO_LED_GREEN, PIN_LED_GREEN); /* Blink green */
    } else {
      palSetPad(GPIO_LED_GREEN, PIN_LED_GREEN); /* Off green */
      palTogglePad(GPIO_LED_RED, PIN_LED_RED); /* Blink red */
    }
    chThdSleepMilliseconds(500);
  }
}
Example #16
0
THD_FUNCTION(Thread0, arg)
{
    (void)arg;
    if (RCC->CSR & RCC_CSR_WWDGRSTF)
    {
        /* WWDGRST flag set */
        serDbg("\r\n**WWDG Reset!**\r\n\r\n");

        /* Clear reset flags */
        RCC->CSR |= RCC_CSR_RMVF;
    }

    /* WWDG clock counter = (PCLK1 (48MHz)/4096)/8 = 1464Hz (~683 us)  */
    WWDG_SetPrescaler(WWDG_Prescaler_8);

    /* Set Window value to 126; WWDG counter should be refreshed only when the counter
    is below 126 (and greater than 64) otherwise a reset will be generated */
    WWDG_SetWindowValue(126);

    /* Freeze WWDG while core is stopped */
    DBGMCU->APB1FZ |= DBGMCU_APB1_FZ_DBG_WWDG_STOP;

    /* Enable WWDG and set counter value to 127, WWDG timeout = ~683 us * 64 = 43.7 ms
    In this case the refresh window is: ~683 * (127-126)= 0.683ms < refresh window < ~683 * 64 = 43.7ms
    */
    WWDG_Enable(127);
    serDbg("WWDG Started\r\n");
    while (true)
    {
        chThdSleepMilliseconds(25);
        palTogglePad(GPIOC, GPIOC_LED3); /* Watchdog heartbeat */
        WWDG_SetCounter(127);
    }
}
Example #17
0
/*
 * Heartbeat thread
 */
static __attribute__((noreturn)) msg_t thd_heartbeat(void *arg)
{
  (void) arg;
  chRegSetThreadName("pprz heartbeat");

  chThdSleepSeconds (SDLOG_START_DELAY);
  if (usbStorageIsItRunning ())
    chThdSleepSeconds (20000); // stuck here for hours
  else
    sdOk = chibios_logInit();

  while (TRUE) {
    palTogglePad (GPIOC, GPIOC_LED3);
    chThdSleepMilliseconds (sdOk == TRUE ? 1000 : 200);
    static uint32_t timestamp = 0;


    // we sync gps time to rtc every 5 seconds
    if (chTimeNow() - timestamp > 5000) {
      timestamp = chTimeNow();
      if (getGpsTimeOfWeek() != 0) {
        setRtcFromGps (getGpsWeek(), getGpsTimeOfWeek());
      }
    }

  }
}
Example #18
0
int
main(void)
{
  halInit();
  chSysInit();
  static const evhandler_t evhndl[] = { };

  // CDC.
  sduObjectInit(&SDU1);
  sduStart(&SDU1, &serusbcfg);
  usbDisconnectBus(serusbcfg.usbp);
  chThdSleepMilliseconds(1500);
  usbStart(serusbcfg.usbp, &usbcfg);
  usbConnectBus(serusbcfg.usbp);

  chThdSleepMilliseconds(4000);

  uart_init();
  chThdCreateStatic(uart_thread_wa, sizeof(uart_thread_wa), NORMALPRIO, uart_thread, NULL);

  while (true)
  {
    palTogglePad(GPIOC, GPIOC_LED);
    chEvtDispatch(evhndl, chEvtWaitOneTimeout(ALL_EVENTS, MS2ST(100)));
  }
}
Example #19
0
/**
 * Main function.
 */
int main(void){

  /*
   * System initializations.
   * - HAL initialization, this also initializes the configured device drivers
   *   and performs the board-specific initializations.
   * - Kernel initialization, the main() function becomes a thread and the
   *   RTOS is active.
   */
  halInit();
  chSysInit();

  /* Goal of this testhal */
  if (!check_watermark()){
    write_watermark();
  }

  /* Normal main thread loop. */
  while (TRUE){
    chThdSleepMilliseconds(200);
    palTogglePad(GPIOB, GPIOB_LED_B);
  }

  return 0;
}
Example #20
0
static void led(void) {

    while (1) {
        palTogglePad(GPIOC, GPIOC_LED);
        chThdSleepMilliseconds(500);
    }
}
Example #21
0
/*
 * Application entry point.
 */
int main(void) {

  /*
   * System initializations.
   * - HAL initialization, this also initializes the configured device drivers
   *   and performs the board-specific initializations.
   * - Kernel initialization, the main() function becomes a thread and the
   *   RTOS is active.
   */
  halInit();
  chSysInit();

  /*
   * Activates serial 1 (UART0) using the driver default configuration.
   */
  sdStart(&SD1, &s0cfg);
  sdPut(&SD1,'B');

  chThdCreateStatic(waSerEcho, sizeof(waSerEcho), NORMALPRIO, thSerEcho, NULL);

  while (!chThdShouldTerminateX()) {
    chThdSleepMilliseconds(1000);
    palTogglePad(TEENSY_PIN13_IOPORT, TEENSY_PIN13);
    sdPut(&SD1,'B');
  }

  return 0;
}
Example #22
0
/// system tick handler
static void timer3_Handler(GPTDriver *gptp)
{   
    palTogglePad(PORT_LED2, PIN_LED2);
   
	/*
	clock stuff
	*/
	clock_counter_10ms += TICK_TIME_MS;
	if (clock_counter_10ms >= 10) {
		clock_counter_10ms -= 10;
		clock_flag_10ms = 1;

		clock_counter_250ms++;
		if (clock_counter_250ms >= 25) {
			clock_counter_250ms = 0;
			clock_flag_250ms = 1;

			clock_counter_1s++;
			if (clock_counter_1s >= 4) {
				clock_counter_1s = 0;
				clock_flag_1s = 1;
			}
		}
	}
}  
Example #23
0
static THD_FUNCTION(ThreadTestEvents, arg)
{
    (void)arg;
    event_listener_t el;
    eventmask_t events;
    int i = 0;

    chEvtRegisterMask(  &hmc5983cfg.data_holder->es,
                        &el,
                        HMC5983_DATA_AVAILABLE_EVENTMASK);  
    
    while(1)
    {
        events = chEvtWaitOne(HMC5983_DATA_AVAILABLE_EVENTMASK);

        if (events == HMC5983_DATA_AVAILABLE_EVENTMASK)
        {
            if (i++ > 10)
            {
                palTogglePad(GPIOC, GPIOC_LED_USR);
                i = 0;
            }
        }
    }

    return MSG_OK;
}
Example #24
0
/*
 * data Transmitted Callback
 */
void dataTransmitted(USBDriver *usbp, usbep_t ep){
    (void) usbp;
    (void) ep;
    //reset the transmitting flag
    transmitting=0;
    palTogglePad(GPIOD, GPIOD_LED3);
}
Example #25
0
/*
 * Application entry point.
 */
int main(void) {

  /*
   * System initializations.
   * - HAL initialization, this also initializes the configured device drivers
   *   and performs the board-specific initializations.
   * - Kernel initialization, the main() function becomes a thread and the
   *   RTOS is active.
   */
  halInit();
  chSysInit();

  /*
   *  Initializes the GPT driver 1.
   */
  gptStart(&GPTD1, &gpt1cfg);

#if !POLLED_TEST
  gptStartContinuous(&GPTD1, 2);
#endif

  while (1) {
#if POLLED_TEST
    gpt_lld_polled_delay(&GPTD1, 1) ;
    palTogglePad(GPIOB, GPIOB_LED);
#else
    chThdSleepMilliseconds(500);
#endif
  }
}
Example #26
0
/*
 * Entry point, note, the main() function is already a thread in the system
 * on entry.
 */
int main(void) {

  halInit();
  chSysInit();

  i2cStart(&I2CD1, &i2cfg);

  /* Create EEPROM thread. */
  chThdCreateStatic(PollEepromThreadWA,
          sizeof(PollEepromThreadWA),
          NORMALPRIO,
          PollEepromThread,
          NULL);

  /* Create not responding thread. */
  chThdCreateStatic(PollFakeThreadWA,
          sizeof(PollFakeThreadWA),
          NORMALPRIO,
          PollFakeThread,
          NULL);

  /* main loop handles LED */
  while (true) {
    palTogglePad(IOPORT1, LED0); /* on */
    osalThreadSleepMilliseconds(500);
  }

  return 0;
}
Example #27
0
void startDisplay(void) {


    ssd1306Init(SSD1306_SWITCHCAPVCC);
    ssd1306TurnOn();
    display.state = DISPLAY_ON;

    ssd1306DrawString(40, 20, "OpenQS", Font_System7x8);
    chThdSleepMilliseconds(100); // Fails

    serDbg("startDisplay Complete\r\n");

    while (true) {

        serDbg("Display OFF\r\n");
        ssd1306TurnOff();
        display.state = DISPLAY_OFF;

        while (!BUTTON_SEL) /* Wait until the select button is pressed */
        {
            palTogglePad(GPIOC, GPIOC_LED4); /* Display heartbeat */
            chThdSleepMilliseconds(250);
        }
        serDbg("Display ON\r\n");
        ssd1306ClearScreen();
        ssd1306TurnOn();
        display.state = DISPLAY_ON;
        openMenu(&mainMenu);
    }
}
Example #28
0
static void testwidthcb(EICUDriver *eicup, eicuchannel_t channel)
{
    (void)eicup;
    (void)channel;
    ic_test = eicuGetWidth(eicup, channel);
    palTogglePad(GPIOC, GPIOC_LED_ERR);
}
Example #29
0
static msg_t BlinkTh(void*) {
  for (;;) {
    chThdSleepMilliseconds(250);
    palTogglePad(GPIO1, GPIO1_LED1);
  }
  return 0;
}
Example #30
0
int main(void)
{
	halInit();
	chSysInit();

	palSetPadMode(GPIOA, GPIOA_BUTTON, PAL_MODE_INPUT_PULLDOWN);
	palSetPadMode(GPIOD, GPIOD_LED4, PAL_MODE_OUTPUT_PUSHPULL);
	palSetPadMode(GPIOD, GPIOD_LED3, PAL_MODE_OUTPUT_PUSHPULL);
	palSetPadMode(GPIOD, GPIOD_LED5, PAL_MODE_OUTPUT_PUSHPULL);
	palSetPadMode(GPIOD, GPIOD_LED6, PAL_MODE_OUTPUT_PUSHPULL);

	chThdSleepSeconds(1);

	initUsbShell();

	SPIInit();

	fc_nrf_init(NULL, NRF_MODE_PTX);

	if(fc_nrf_test_spi_connection() == 1) {
		palSetPad(GPIOD, GPIOD_LED3);
	}

	while (TRUE)
	{
		palTogglePad(GPIOD, GPIOD_LED4);
		keepShellAlive();
		chThdYield();
	}
}