Thingsquare Lighting development tips

Time synchronization

int thsq_has_time(void);
uint32_t thsq_get_time(void);

Observe lighting decisions

static void
callback_thsq(enum thsq_reason reason, const char *msg, int len)
{
  if(reason == THSQ_LIGHTING_CHANGED) {
    printf("lighting event: %.*s\n", len, msg);
    printf(" * red:   %d\n", thsq_lighting_current_red());
    printf(" * green: %d\n", thsq_lighting_current_green());
    printf(" * blue:  %d\n", thsq_lighting_current_blue());
  }
}

Test lighting locally

void thsq_lighting_set_lights(int prio, int r, int g, int b, uint32_t dur);
thsq_lighting_set_lights(4, 100, 100, 100, 600);

Test PWM locally

thsq_pwm_cc26xx_cc13xx_conf(thsq_gpio_get_pwm_red(), IOID_6, 5000UL, GPT0_BASE, 0);
thsq_pwm_set_dutycycle(thsq_gpio_get_pwm_red(), 100);

Light switch example

const char * thsq_zones_get_zone(void);
int thsq_lighting_send(enum thsq_lighting_type t,
                       const uint8_t *zones, int zoneslen,
                       const uint8_t *data, int datalen, int broadcast);

static void
callback_thsq(enum thsq_reason reason, const char *msg, int len)
{
  if(reason == THSQ_GPIO_INPUT) {
   char *z = thsq_zones_get_zone();
   thsq_lighting_send(THSQ_LIGHTING_SWITCH, z, strlen(z), NULL, 0, 1);
  }
}