simplify code, bugfixes PE3
This commit is contained in:
parent
5f18fc6955
commit
026b961d5e
|
@ -92,7 +92,6 @@
|
||||||
#include "dev/battery-sensor.h"
|
#include "dev/battery-sensor.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "dev/optriac.h"
|
|
||||||
|
|
||||||
/* For CoAP-specific example: not required for normal RESTful Web service. */
|
/* For CoAP-specific example: not required for normal RESTful Web service. */
|
||||||
#if WITH_COAP == 3
|
#if WITH_COAP == 3
|
||||||
|
@ -546,80 +545,7 @@ led2_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
#if (defined (PLATFORM_HAS_OPTRIAC) && defined (OSDPLUG))
|
#if (defined PLATFORM_HAS_OPTRIAC)
|
||||||
/******************************************************************************/
|
|
||||||
#if REST_RES_OPTRIAC
|
|
||||||
/*A simple actuator example*/
|
|
||||||
RESOURCE(optriac, METHOD_GET | METHOD_POST | METHOD_PUT , "a/optriac", "title=\"TRIAC, POST/PUT mode=on|off\";rt=\"Control\"");
|
|
||||||
|
|
||||||
void
|
|
||||||
optriac_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset)
|
|
||||||
{
|
|
||||||
const char *mode = NULL;
|
|
||||||
static char namea[17]="Triac-a";
|
|
||||||
static char nameb[17]="Triac-b";
|
|
||||||
|
|
||||||
char temp[100];
|
|
||||||
int index = 0;
|
|
||||||
size_t len = 0;
|
|
||||||
int success = 1;
|
|
||||||
|
|
||||||
switch(REST.get_method_type(request)){
|
|
||||||
case METHOD_GET:
|
|
||||||
// jSON Format
|
|
||||||
index += sprintf(temp + index,"{\n \"%s\" : ",namea);
|
|
||||||
if(optriac_sensor.value(OPTRIAC_SENSOR_A) == 0)
|
|
||||||
index += sprintf(temp + index,"\"off\",\n");
|
|
||||||
if(optriac_sensor.value(OPTRIAC_SENSOR_A) == 1)
|
|
||||||
index += sprintf(temp + index,"\"on\",\n");
|
|
||||||
index += sprintf(temp + index," \"%s\" : ",nameb);
|
|
||||||
if(optriac_sensor.value(OPTRIAC_SENSOR_B) == 0)
|
|
||||||
index += sprintf(temp + index,"\"off\"\n");
|
|
||||||
if(optriac_sensor.value(OPTRIAC_SENSOR_B) == 1)
|
|
||||||
index += sprintf(temp + index,"\"on\"\n");
|
|
||||||
index += sprintf(temp + index,"}\n");
|
|
||||||
|
|
||||||
len = strlen(temp);
|
|
||||||
memcpy(buffer, temp,len );
|
|
||||||
|
|
||||||
REST.set_header_content_type(response, REST.type.APPLICATION_JSON);
|
|
||||||
REST.set_response_payload(response, buffer, len);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case METHOD_PUT:
|
|
||||||
success = 0;
|
|
||||||
break;
|
|
||||||
case METHOD_POST:
|
|
||||||
if (success && (len=REST.get_post_variable(request, "mode", &mode))) {
|
|
||||||
PRINTF("mode %s\n", mode);
|
|
||||||
if (strncmp(mode, "on", len)==0) {
|
|
||||||
optriac_sensor.configure(OPTRIAC_SENSOR_A,1);
|
|
||||||
optriac_sensor.configure(OPTRIAC_SENSOR_B,1);
|
|
||||||
statusled_on();
|
|
||||||
} else if (strncmp(mode, "off", len)==0) {
|
|
||||||
optriac_sensor.configure(OPTRIAC_SENSOR_A,0);
|
|
||||||
optriac_sensor.configure(OPTRIAC_SENSOR_B,0);
|
|
||||||
statusled_off();
|
|
||||||
} else {
|
|
||||||
success = 0;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
success = 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
success = 0;
|
|
||||||
}
|
|
||||||
if (!success) {
|
|
||||||
REST.set_response_status(response, REST.status.BAD_REQUEST);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
/******************************************************************************/
|
|
||||||
#endif /* PLATFORM_HAS_OPTRIAC */
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
#if (defined (PLATFORM_HAS_OPTRIAC) && defined (OSDLIGHT))
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
#if REST_RES_OPTRIAC
|
#if REST_RES_OPTRIAC
|
||||||
/*A simple actuator example*/
|
/*A simple actuator example*/
|
||||||
|
@ -643,14 +569,14 @@ optriac_handler(void* request, void* response, uint8_t *buffer, uint16_t preferr
|
||||||
case METHOD_GET:
|
case METHOD_GET:
|
||||||
// jSON Format
|
// jSON Format
|
||||||
index += sprintf(temp + index,"{\n \"%s\" : ",namea);
|
index += sprintf(temp + index,"{\n \"%s\" : ",namea);
|
||||||
if(optriac_sensor.value(OPTRIAC_SENSOR_A) == 0)
|
if(optriac_sensor.value(OPTRIAC_SENSOR_1) == 0)
|
||||||
index += sprintf(temp + index,"\"off\",\n");
|
index += sprintf(temp + index,"\"off\",\n");
|
||||||
if(optriac_sensor.value(OPTRIAC_SENSOR_A) == 1)
|
if(optriac_sensor.value(OPTRIAC_SENSOR_1) == 1)
|
||||||
index += sprintf(temp + index,"\"on\",\n");
|
index += sprintf(temp + index,"\"on\",\n");
|
||||||
index += sprintf(temp + index," \"%s\" : ",nameb);
|
index += sprintf(temp + index," \"%s\" : ",nameb);
|
||||||
if(optriac_sensor.value(OPTRIAC_SENSOR_B) == 0)
|
if(optriac_sensor.value(OPTRIAC_SENSOR_2) == 0)
|
||||||
index += sprintf(temp + index,"\"off\"\n");
|
index += sprintf(temp + index,"\"off\"\n");
|
||||||
if(optriac_sensor.value(OPTRIAC_SENSOR_B) == 1)
|
if(optriac_sensor.value(OPTRIAC_SENSOR_2) == 1)
|
||||||
index += sprintf(temp + index,"\"on\"\n");
|
index += sprintf(temp + index,"\"on\"\n");
|
||||||
index += sprintf(temp + index,"}\n");
|
index += sprintf(temp + index,"}\n");
|
||||||
|
|
||||||
|
@ -669,11 +595,11 @@ optriac_handler(void* request, void* response, uint8_t *buffer, uint16_t preferr
|
||||||
PRINTF("type %.*s\n", len, type);
|
PRINTF("type %.*s\n", len, type);
|
||||||
|
|
||||||
if (strncmp(type, "a", len)==0) {
|
if (strncmp(type, "a", len)==0) {
|
||||||
triac = OPTRIAC_SENSOR_A;
|
triac = OPTRIAC_SENSOR_1;
|
||||||
} else if(strncmp(type,"b", len)==0) {
|
} else if(strncmp(type,"b", len)==0) {
|
||||||
triac = OPTRIAC_SENSOR_B;
|
triac = OPTRIAC_SENSOR_2;
|
||||||
} else {
|
} else {
|
||||||
triac = OPTRIAC_SENSOR_A;
|
triac = OPTRIAC_SENSOR_1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
success = 0;
|
success = 0;
|
||||||
|
@ -683,108 +609,18 @@ optriac_handler(void* request, void* response, uint8_t *buffer, uint16_t preferr
|
||||||
PRINTF("mode %s\n", mode);
|
PRINTF("mode %s\n", mode);
|
||||||
|
|
||||||
if (strncmp(mode, "on", len)==0) {
|
if (strncmp(mode, "on", len)==0) {
|
||||||
optriac_sensor.configure(triac,1);
|
if (triac == OPTRIAC_SENSOR_1){
|
||||||
} else if (strncmp(mode, "off", len)==0) {
|
|
||||||
optriac_sensor.configure(triac,0);
|
|
||||||
} else {
|
|
||||||
success = 0;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
success = 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
success = 0;
|
|
||||||
}
|
|
||||||
if (!success) {
|
|
||||||
REST.set_response_status(response, REST.status.BAD_REQUEST);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
/******************************************************************************/
|
|
||||||
#endif /* PLATFORM_HAS_OPTRIAC */
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
#if (defined (PLATFORM_HAS_OPTRIAC) && defined (OSDSHUTTER))
|
|
||||||
/******************************************************************************/
|
|
||||||
#if REST_RES_OPTRIAC
|
|
||||||
/*A simple actuator example*/
|
|
||||||
RESOURCE(optriac, METHOD_GET | METHOD_POST | METHOD_PUT , "a/optriac", "title=\"TRIAC: ?type=a|b, POST/PUT mode=on|off\";rt=\"Control\"");
|
|
||||||
|
|
||||||
void
|
|
||||||
optriac_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset)
|
|
||||||
{
|
|
||||||
const char *type = NULL;
|
|
||||||
const char *mode = NULL;
|
|
||||||
static char namea[17]="Triac-a";
|
|
||||||
static char nameb[17]="Triac-b";
|
|
||||||
|
|
||||||
char temp[100];
|
|
||||||
int index = 0;
|
|
||||||
size_t len = 0;
|
|
||||||
|
|
||||||
uint8_t triac = 0;
|
|
||||||
int success = 1;
|
|
||||||
switch(REST.get_method_type(request)){
|
|
||||||
case METHOD_GET:
|
|
||||||
// jSON Format
|
|
||||||
index += sprintf(temp + index,"{\n \"%s\" : ",namea);
|
|
||||||
if(optriac_sensor.value(OPTRIAC_SENSOR_A) == 0)
|
|
||||||
index += sprintf(temp + index,"\"off\",\n");
|
|
||||||
if(optriac_sensor.value(OPTRIAC_SENSOR_A) == 1)
|
|
||||||
index += sprintf(temp + index,"\"on\",\n");
|
|
||||||
index += sprintf(temp + index," \"%s\" : ",nameb);
|
|
||||||
if(optriac_sensor.value(OPTRIAC_SENSOR_B) == 0)
|
|
||||||
index += sprintf(temp + index,"\"off\"\n");
|
|
||||||
if(optriac_sensor.value(OPTRIAC_SENSOR_B) == 1)
|
|
||||||
index += sprintf(temp + index,"\"on\"\n");
|
|
||||||
index += sprintf(temp + index,"}\n");
|
|
||||||
|
|
||||||
len = strlen(temp);
|
|
||||||
memcpy(buffer, temp,len );
|
|
||||||
|
|
||||||
REST.set_header_content_type(response, REST.type.APPLICATION_JSON);
|
|
||||||
REST.set_response_payload(response, buffer, len);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case METHOD_PUT:
|
|
||||||
success = 0;
|
|
||||||
break;
|
|
||||||
case METHOD_POST:
|
|
||||||
if ((len=REST.get_query_variable(request, "type", &type))) {
|
|
||||||
PRINTF("type %.*s\n", len, type);
|
|
||||||
|
|
||||||
if (strncmp(type, "a", len)==0) {
|
|
||||||
triac = OPTRIAC_SENSOR_A;
|
|
||||||
} else if(strncmp(type,"b", len)==0) {
|
|
||||||
triac = OPTRIAC_SENSOR_B;
|
|
||||||
} else {
|
|
||||||
triac = OPTRIAC_SENSOR_A;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
success = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (success && (len=REST.get_post_variable(request, "mode", &mode))) {
|
|
||||||
PRINTF("mode %s\n", mode);
|
|
||||||
|
|
||||||
if (strncmp(mode, "on", len)==0) {
|
|
||||||
if (triac == OPTRIAC_SENSOR_A){
|
|
||||||
// statusled_off();
|
|
||||||
// optriac_sensor.configure(OPTRIAC_SENSOR_B,0);
|
|
||||||
// leds_on(LEDS_RED);
|
|
||||||
// optriac_sensor.configure(OPTRIAC_SENSOR_A,1);
|
|
||||||
g_triac_a = 1;
|
g_triac_a = 1;
|
||||||
} else {
|
} else {
|
||||||
// leds_off(LEDS_RED);
|
|
||||||
// optriac_sensor.configure(OPTRIAC_SENSOR_A,0);
|
|
||||||
// statusled_on();
|
|
||||||
// optriac_sensor.configure(OPTRIAC_SENSOR_B,1);
|
|
||||||
g_triac_b = 1;
|
g_triac_b = 1;
|
||||||
}
|
}
|
||||||
} else if (strncmp(mode, "off", len)==0) {
|
} else if (strncmp(mode, "off", len)==0) {
|
||||||
optriac_sensor.configure(triac,0);
|
if (triac == OPTRIAC_SENSOR_1){
|
||||||
|
g_triac_a = 0;
|
||||||
|
} else {
|
||||||
|
// Triac B off
|
||||||
|
g_triac_b = 0;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
success = 0;
|
success = 0;
|
||||||
}
|
}
|
||||||
|
@ -954,11 +790,7 @@ PROCESS_THREAD(rest_server_example, ev, data)
|
||||||
SENSORS_ACTIVATE(optriac_sensor);
|
SENSORS_ACTIVATE(optriac_sensor);
|
||||||
rest_activate_resource(&resource_optriac);
|
rest_activate_resource(&resource_optriac);
|
||||||
#endif
|
#endif
|
||||||
#if defined (PLATFORM_HAS_PIR) && (REST_RES_EVENT)
|
|
||||||
SENSORS_ACTIVATE(pir_sensor);
|
|
||||||
rest_activate_event_resource(&resource_pir);
|
|
||||||
PRINTF("ACTIVATE PIR\n");
|
|
||||||
#endif
|
|
||||||
#if defined (PLATFORM_HAS_LED)
|
#if defined (PLATFORM_HAS_LED)
|
||||||
#if REST_RES_LED
|
#if REST_RES_LED
|
||||||
rest_activate_resource(&resource_led1);
|
rest_activate_resource(&resource_led1);
|
||||||
|
@ -976,59 +808,25 @@ PROCESS_THREAD(rest_server_example, ev, data)
|
||||||
|
|
||||||
etimer_set(&ds_periodic_timer, MESURE_INTERVAL);
|
etimer_set(&ds_periodic_timer, MESURE_INTERVAL);
|
||||||
/* Define application-specific events here. */
|
/* Define application-specific events here. */
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
PROCESS_WAIT_EVENT();
|
PROCESS_WAIT_EVENT();
|
||||||
#if defined (REST_RES_EVENT)
|
|
||||||
if (ev == sensors_event ) {
|
|
||||||
PRINTF("EVENT\n");
|
|
||||||
#if (REST_RES_EVENT && defined (PLATFORM_HAS_PIR))
|
|
||||||
if (data == &pir_sensor) {
|
|
||||||
PRINTF("PIR EVENT\n");
|
|
||||||
/* Call the event_handler for this application-specific event. */
|
|
||||||
pir_event_handler(&resource_pir);
|
|
||||||
PRINTF("CALL EVENT HANDLER\n");
|
|
||||||
}
|
|
||||||
#endif /* PLATFORM_HAS_PIR */
|
|
||||||
}
|
|
||||||
#endif /* REST_RES_EVENT */
|
|
||||||
|
|
||||||
/* Button Tric Logic */
|
/* Button Tric Logic */
|
||||||
|
|
||||||
if(etimer_expired(&ds_periodic_timer)) {
|
if(etimer_expired(&ds_periodic_timer)) {
|
||||||
PRINTF("Periodic %d %d\n",ext5,ext6);
|
PRINTF("Periodic \n");
|
||||||
#if (defined (OSDLIGHT))
|
PRINTF("extb %d %d\n",ext5,ext6);
|
||||||
if(ext5 != is_button_ext5()) {
|
PRINTF("g_triac %d %d\n",g_triac_a,g_triac_b);
|
||||||
ext5 = is_button_ext5();
|
|
||||||
PRINTF("Toggle Triac A\n");
|
|
||||||
// Toggle Triac A
|
|
||||||
if(optriac_sensor.value(OPTRIAC_SENSOR_A) == 0){
|
|
||||||
optriac_sensor.configure(OPTRIAC_SENSOR_A,1);
|
|
||||||
leds_on(LEDS_RED);
|
|
||||||
}else{
|
|
||||||
optriac_sensor.configure(OPTRIAC_SENSOR_A,0);
|
|
||||||
leds_off(LEDS_RED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(ext6 != is_button_ext6()) {
|
|
||||||
ext6 = is_button_ext6();
|
|
||||||
PRINTF("Toggle Triac B\n");
|
|
||||||
// Toggle Triac B
|
|
||||||
if(optriac_sensor.value(OPTRIAC_SENSOR_B) == 0){
|
|
||||||
optriac_sensor.configure(OPTRIAC_SENSOR_B,1);
|
|
||||||
statusled_on();
|
|
||||||
}else{
|
|
||||||
optriac_sensor.configure(OPTRIAC_SENSOR_B,0);
|
|
||||||
statusled_off();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#if (defined (OSDSHUTTER))
|
|
||||||
if( is_button_ext5()) {
|
if( is_button_ext5()) {
|
||||||
g_triac_a = 1;
|
g_triac_a = 1;
|
||||||
}
|
}
|
||||||
if( is_button_ext6()) {
|
if( is_button_ext6()) {
|
||||||
g_triac_b = 1;
|
g_triac_b = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if (defined (OSDSHUTTER))
|
||||||
PRINTF("State: %d\n",state);
|
PRINTF("State: %d\n",state);
|
||||||
switch(state)
|
switch(state)
|
||||||
{
|
{
|
||||||
|
@ -1037,7 +835,7 @@ PROCESS_THREAD(rest_server_example, ev, data)
|
||||||
PRINTF("Triac A\n");
|
PRINTF("Triac A\n");
|
||||||
g_triac_a = 0;
|
g_triac_a = 0;
|
||||||
// Triac B off
|
// Triac B off
|
||||||
optriac_sensor.configure(OPTRIAC_SENSOR_B,0);
|
optriac_sensor.configure(OPTRIAC_SENSOR_2,0);
|
||||||
statusled_off();
|
statusled_off();
|
||||||
state = 1;
|
state = 1;
|
||||||
}
|
}
|
||||||
|
@ -1045,26 +843,26 @@ PROCESS_THREAD(rest_server_example, ev, data)
|
||||||
PRINTF("Triac B\n");
|
PRINTF("Triac B\n");
|
||||||
g_triac_b = 0;
|
g_triac_b = 0;
|
||||||
// Triac A off
|
// Triac A off
|
||||||
optriac_sensor.configure(OPTRIAC_SENSOR_A,0);
|
optriac_sensor.configure(OPTRIAC_SENSOR_1,0);
|
||||||
leds_off(LEDS_RED);
|
leds_off(LEDS_RED);
|
||||||
state = 2;
|
state = 2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
// Triac A on
|
// Triac A on
|
||||||
optriac_sensor.configure(OPTRIAC_SENSOR_A,1);
|
optriac_sensor.configure(OPTRIAC_SENSOR_1,1);
|
||||||
leds_on(LEDS_RED);
|
leds_on(LEDS_RED);
|
||||||
etimer_set(&triac_off_timer, gtimer_read()*CLOCK_SECOND);
|
etimer_set(&triac_off_timer, gtimer_read()*CLOCK_SECOND);
|
||||||
state=0;
|
state=0;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
// Triac B on
|
// Triac B on
|
||||||
optriac_sensor.configure(OPTRIAC_SENSOR_B,1);
|
optriac_sensor.configure(OPTRIAC_SENSOR_2,1);
|
||||||
statusled_on();
|
statusled_on();
|
||||||
etimer_set(&triac_off_timer, gtimer_read()*CLOCK_SECOND);
|
etimer_set(&triac_off_timer, gtimer_read()*CLOCK_SECOND);
|
||||||
state=0;
|
state=0;
|
||||||
break;
|
break;
|
||||||
default : state = 0;
|
default: state = 0;
|
||||||
} // switch
|
} // switch
|
||||||
#endif
|
#endif
|
||||||
etimer_reset(&ds_periodic_timer);
|
etimer_reset(&ds_periodic_timer);
|
||||||
|
@ -1073,11 +871,13 @@ PROCESS_THREAD(rest_server_example, ev, data)
|
||||||
if(etimer_expired(&triac_off_timer)) {
|
if(etimer_expired(&triac_off_timer)) {
|
||||||
PRINTF("Triac off timer\n");
|
PRINTF("Triac off timer\n");
|
||||||
// Triac A off
|
// Triac A off
|
||||||
optriac_sensor.configure(OPTRIAC_SENSOR_A,0);
|
optriac_sensor.configure(OPTRIAC_SENSOR_1,0);
|
||||||
leds_off(LEDS_RED);
|
leds_off(LEDS_RED);
|
||||||
|
g_triac_a = 0;
|
||||||
// Triac B off
|
// Triac B off
|
||||||
optriac_sensor.configure(OPTRIAC_SENSOR_B,0);
|
optriac_sensor.configure(OPTRIAC_SENSOR_2,0);
|
||||||
statusled_off();
|
statusled_off();
|
||||||
|
g_triac_b = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
} /* while (1) */
|
} /* while (1) */
|
||||||
|
|
|
@ -87,12 +87,13 @@ uint8_t
|
||||||
is_button_ext4(void)
|
is_button_ext4(void)
|
||||||
{
|
{
|
||||||
/* Return true if button has been pressed. */
|
/* Return true if button has been pressed. */
|
||||||
if ( PINE & (1<<PINE0) ) {
|
// if ( PINE & (1<<PINE0) ) {
|
||||||
return 0;
|
// return 0;
|
||||||
}
|
// }
|
||||||
else{
|
// else{
|
||||||
return 1;
|
// return 1;
|
||||||
}
|
// }
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
uint8_t
|
uint8_t
|
||||||
is_button_ext5(void)
|
is_button_ext5(void)
|
||||||
|
|
Loading…
Reference in a new issue