Example #1
0
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(hello_world_process, ev, data)
{
	PROCESS_BEGIN();

	static struct etimer myTimer;
	
	printf("Hello, world\n");
	leds_init();

	//PORTR_OUT = 0x3;

	etimer_set(&myTimer, CLOCK_SECOND);
	
	while(1)
	{
		PROCESS_WAIT_EVENT();
		
		// PORTR.OUTTGL = 0x3;
		leds_toggle(0x3);
		
		printf("Toggle LED0 from process: %10d: %X\n", i++, leds_get());
		etimer_restart(&myTimer);
	}
	
  
	PROCESS_END();
}
Example #2
0
/*==================[internal functions definition]==========================*/
static uint16_t cmd0x03ReadHoldingReg(
       uint16_t start,
       uint16_t quantity,
       uint8_t * exceptioncode,
       uint8_t * buf
       )
{
   /* used to indicate total of registers reads */
   int8_t ret = 0;
   /* used to indicate quantity of registers processed */
   uint16_t quantityRegProcessed;
   uint16_t temp16u;

   /* loop to read all registers indicated */
   do
   {
      /* select register address to be read */
      switch (start)
      {
         /* estado de los leds */
         case MODBUS_ADDRESS_ESTADO_LEDS:
            temp16u = leds_get();
            ciaaModbus_writeInt(buf, temp16u);
            quantityRegProcessed = 1;
            break;

         /* wrong address */
         default:
            *exceptioncode = CIAA_MODBUS_E_WRONG_STR_ADDR;
            quantityRegProcessed = -1;
            break;
      }

      /* if quantityRegProcessed > 0, successful operation */
      if (quantityRegProcessed > 0)
      {
         /* update buffer pointer to next register */
         buf += (quantityRegProcessed*2);

         /* next address to be read */
         start += quantityRegProcessed;

         /* increment count of registers */
         ret += quantityRegProcessed;
      }
      else
      {
         /* an error occurred in reading */
         ret = -1;
      }
      /* repeat until:
      * - read total registers or
      * - error occurs
      */
   }while ((ret > 0) && (ret < quantity));

   return ret;
}
Example #3
0
void
leds_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset)
{
    size_t len = 0;
    const char *nb = NULL;
    const char *mode = NULL;
    uint8_t led = 0xff;


    static char buf[32];

    if ((len=REST.get_query_variable(request, "led", &nb))) {
        if (len==1 && nb[0]>='1' && nb[0]<='7')  {
            led = nb[0] - '0';
        } else {
            REST.set_response_status(response, REST.status.BAD_REQUEST);
            return;
        }
    }

    if ((METHOD_GET != coap_get_rest_method(request))
            && (len=REST.get_post_variable(request, "mode", &mode))) {
        if (strncmp(mode, "on", len)==0) {
            leds_on(led);
        } else if (strncmp(mode, "off", len)==0) {
            leds_off(led);
        } else if (strncmp(mode, "toggle", len)==0) {
            leds_toggle(led);
        } else {
            REST.set_response_status(response, REST.status.BAD_REQUEST);
            return;
        }
    }
    len = 0;
    if (led==0xff) {
        for (led=0; led<2; led++) {
            len += snprintf(buf+len, sizeof(buf)-len, "led%d=%s;", led+1, (leds_get()&(1<<led))?"on":"off");
        }
    } else
        snprintf(buf, sizeof(buf), "led%d=%s;", led, (leds_get()&(1<<(led-1)))?"on":"off");

    REST.set_header_content_type(response, REST.type.TEXT_PLAIN);
    REST.set_response_payload(response, buf, strlen(buf));
}
Example #4
0
// 1/16th second LED blink.
void blink_LEDs(unsigned char ledv) {
	unsigned char current_leds;	
	current_leds = leds_get();
	leds_on(ledv);
	clock_delay(125);
	if(current_leds == LEDS_RED) {
		leds_off(ledv & (~LEDS_RED));
	} else {
		leds_off(ledv);
	}
}
Example #5
0
void handle_sensor_data_frame(uint8_t *frame)
{
	uint8_t buf[9];
	uint8_t length = 4;
	if (frame[1] == REQUEST_MSG)
	{
		buf[0] = PROFILE_SENSOR_DATA;
		buf[1] = REPLY_MSG;
		
		*(uint16_t *)&buf[2] = (HAS_SWITCH  << SWITCH_BIT) 	
										| (HAS_TEMP_SENSOR  << TEMP_SENSOR_BIT) 
										| (HAS_LIGHT_SENSOR  << LIGHT_SENSOR_BIT)
										| (HAS_PIR_SENSOR  << PIR_SENSOR_BIT);
										
		if (HAS_SWITCH)
		{
			if (LEDS_YELLOW & leds_get())
				buf[length] = 0x01;
			else
				buf[length] = 0x00;
				
			length += 1;
		}
		
		if (HAS_TEMP_SENSOR)
		{
			*(uint16_t *)&buf[length] = my_temp;
			length += 2;
		}
		
		if (HAS_LIGHT_SENSOR)
		{
			*(uint16_t *)&buf[length] = my_light;
			length += 2;
		}
		
		if (HAS_PIR_SENSOR)
		{
			*(uint8_t *)&buf[length] = (uint8_t)pir_registered;
			length += 1;
		}
		
		plug_send_message(&UIP_IP_BUF->srcipaddr ,buf, length);
	}

}
Example #6
0
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(blink_process, ev, data)
{
  PROCESS_BEGIN();

  blinks = 0;

  while(1) {
    etimer_set(&et_blink, CLOCK_SECOND);

    PROCESS_WAIT_EVENT_UNTIL(ev == PROCESS_EVENT_TIMER);

//    leds_off(LEDS_ALL);
//    leds_on(blinks & LEDS_ALL);
    printf("Blink... (state %c)\n", leds_get());
  }

  PROCESS_END();
}
Example #7
0
static void
res_get_handler(void *request, void *response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset)
{
  REST.set_header_content_type(response, REST.type.TEXT_PLAIN);
  REST.set_response_payload(response, buffer, snprintf((char *)buffer, preferred_size, "%d", (leds_get() & LEDS_3) ? 1 : 0));
}
Example #8
0
inline int led_b_value(void) {
  return ((leds_get() & LEDS_BLUE) != 0);
}
Example #9
0
inline int led_g_value(void) {
  return ((leds_get() & LEDS_GREEN) != 0);
}
Example #10
0
inline int led_r_value(void) {
  return ((leds_get() & LEDS_RED) != 0);
}