Conflicts: apps/arduino/arduino-process.c apps/arduino/arduino-process.h apps/json-resource/generic_resource.c apps/json-resource/generic_resource.h apps/time/Makefile.time apps/time/resource_gmtime.c apps/time/resource_timestamp.c apps/time/time.c apps/time/time_resource.h core/dev/leds.c core/lib/petsciiconv.c core/net/ip/resolv.c core/net/ip/slipdev.c core/net/ip/tcpip.c core/net/ipv4/uip.c core/net/ipv6/uip-ds6.c core/net/mac/contikimac/contikimac.c core/net/mac/frame802154.h core/net/mac/framer-802154.c core/net/mac/nullrdc.c core/net/rpl/rpl-dag.c core/net/rpl/rpl-ext-header.c core/net/rpl/rpl-icmp6.c core/net/rpl/rpl-mrhof.c core/net/rpl/rpl-of0.c core/net/rpl/rpl-timers.c core/net/rpl/rpl.c cpu/avr/Makefile.avr cpu/avr/dev/lanc111.c cpu/avr/radio/rf230bb/halbb.c dev/arduino/arduino-compat.h examples/osd/.gitignore examples/osd/arduino-dooralert/Makefile examples/osd/arduino-dooralert/flash.sh examples/osd/arduino-dooralert/run.sh examples/osd/arduino-dooralert/sketch.pde examples/osd/arduino-merkurboard/Makefile examples/osd/arduino-merkurboard/README.md examples/osd/arduino-merkurboard/flash.sh examples/osd/arduino-merkurboard/project-conf.h examples/osd/arduino-merkurboard/run.sh examples/osd/arduino-plantobserving/Makefile examples/osd/arduino-plantobserving/flash.sh examples/osd/arduino-plantobserving/project-conf.h examples/osd/arduino-plantobserving/run.sh examples/osd/arduino-plantobserving/sketch.pde examples/osd/arduino-roomalert/Makefile examples/osd/arduino-roomalert/flash.sh examples/osd/arduino-roomalert/run.sh examples/osd/arduino-roomalert/sketch.pde examples/osd/arduino-sketch/Makefile examples/osd/arduino-sketch/flash.sh examples/osd/arduino-sketch/led_pwm.h examples/osd/arduino-sketch/resource_led_pwm.c examples/osd/arduino-sketch/run.sh examples/osd/arduino-sketch/sketch.pde examples/osd/arduino-wateralert/Makefile examples/osd/arduino-wateralert/flash.sh examples/osd/arduino-wateralert/run.sh examples/osd/arduino-wateralert/sketch.pde examples/osd/climate/Makefile examples/osd/climate/er-example-server.c examples/osd/climate/flash.sh examples/osd/climate/project-conf.h examples/osd/climate/run.sh examples/osd/climate/server-only.csc examples/osd/climate2/Makefile examples/osd/climate2/er-example-server.c examples/osd/climate2/flash.sh examples/osd/climate2/project-conf.h examples/osd/climate2/run.sh examples/osd/climate2/server-only.csc examples/osd/dual-rgbw-actor/Makefile examples/osd/dual-rgbw-actor/flash.sh examples/osd/dual-rgbw-actor/run.sh examples/osd/dual-rgbw-actor/server-client.csc examples/osd/dual-rgbw-actor/server-only.csc examples/osd/embedd-vm-merkurboard/Makefile examples/osd/embedd-vm-merkurboard/embedd-vm-server.c examples/osd/embedd-vm-merkurboard/flash.sh examples/osd/embedd-vm-merkurboard/run.sh examples/osd/embedd-vm-merkurboard/server-only.csc examples/osd/er-rest-example-merkurboard/Makefile examples/osd/er-rest-example-merkurboard/README.md examples/osd/er-rest-example-merkurboard/er-example-client.c examples/osd/er-rest-example-merkurboard/er-example-server.c examples/osd/er-rest-example-merkurboard/er-plugtest-server.c examples/osd/er-rest-example-merkurboard/flash.sh examples/osd/er-rest-example-merkurboard/flashclient.sh examples/osd/er-rest-example-merkurboard/project-conf.h examples/osd/er-rest-example-merkurboard/run.sh examples/osd/er-rest-example-merkurboard/runclient.sh examples/osd/er-rest-example-merkurboard/server-client.csc examples/osd/light-actor/Makefile examples/osd/light-actor/er-example-server.c examples/osd/light-actor/flash.sh examples/osd/light-actor/pcintkey.c examples/osd/light-actor/project-conf.h examples/osd/light-actor/run.sh examples/osd/light-actor/server-only.csc examples/osd/light-shutter-control/Makefile examples/osd/light-shutter-control/flash.sh examples/osd/light-shutter-control/pcintkey.c examples/osd/light-shutter-control/run.sh examples/osd/light-shutter-control/server-only.csc examples/osd/merkurboard/Makefile examples/osd/merkurboard/README.md examples/osd/merkurboard/er-example-client.c examples/osd/merkurboard/er-example-server.c examples/osd/merkurboard/er-plugtest-server.c examples/osd/merkurboard/flash.sh examples/osd/merkurboard/flashclient.sh examples/osd/merkurboard/project-conf.h examples/osd/merkurboard/run.sh examples/osd/merkurboard/runclient.sh examples/osd/native-border-router/Makefile examples/osd/native-border-router/border-router-cmds.c examples/osd/native-border-router/border-router-cmds.h examples/osd/native-border-router/border-router-rdc.c examples/osd/native-border-router/border-router.c examples/osd/native-border-router/border-router.h examples/osd/native-border-router/project-conf.h examples/osd/native-border-router/slip-config.c examples/osd/native-border-router/slip-dev.c examples/osd/native-border-router/tun-bridge.c examples/osd/pingtheplug/Makefile examples/osd/pingtheplug/er-example-server.c examples/osd/pingtheplug/flash.sh examples/osd/pingtheplug/pcintkey.c examples/osd/pingtheplug/run.sh examples/osd/pingtheplug/server-only.csc examples/osd/pir-sensor/Makefile examples/osd/pir-sensor/flash.sh examples/osd/pir-sensor/run.sh examples/osd/pir-sensor/server-client.csc examples/osd/pir-sensor/server-only.csc examples/osd/powerbox/Makefile examples/osd/powerbox/er-example-server.c examples/osd/powerbox/flash.sh examples/osd/powerbox/run.sh examples/osd/powerbox/server-only.csc examples/osd/pwm-example/Makefile examples/osd/pwm-example/er-example-server.c examples/osd/pwm-example/flash.sh examples/osd/pwm-example/led_pwm.h examples/osd/pwm-example/resource_led_pwm.c examples/osd/pwm-example/run.sh examples/osd/rpl-border-router/Makefile examples/osd/rpl-border-router/border-router.c examples/osd/rpl-border-router/flash.sh examples/osd/rpl-border-router/project-conf.h examples/osd/rpl-border-router/run.sh examples/osd/rpl-border-router/slip-bridge.c examples/osd/runall.sh examples/osd/servo-sensor/Makefile examples/osd/servo-sensor/er-example-server.c examples/osd/servo-sensor/flash.sh examples/osd/servo-sensor/project-conf.h examples/osd/servo-sensor/run.sh examples/osd/servo-sensor/server-client.csc examples/osd/servo-sensor/server-only.csc examples/osd/slip-radio/Makefile examples/osd/slip-radio/flash.sh examples/osd/slip-radio/no-framer.c examples/osd/slip-radio/project-conf.h examples/osd/slip-radio/run.sh examples/osd/slip-radio/slip-net.c examples/osd/slip-radio/slip-radio-cc2420.c examples/osd/slip-radio/slip-radio-sky-sensors.c examples/osd/slip-radio/slip-radio.c examples/osd/slip-radio/slip-radio.h examples/osd/wallclock-time/Makefile examples/osd/wallclock-time/flash.sh examples/osd/wallclock-time/run.sh examples/osd/wirelessplug/Makefile examples/osd/wirelessplug/flash.sh examples/osd/wirelessplug/run.sh examples/osd/wirelessplug/server-client.csc examples/osd/wirelessplug/server-only.csc platform/avr-atmega128rfa1/apps/raven-lcd-interface/raven-lcd.c platform/avr-raven/apps/raven-lcd-interface/raven-lcd.c tools/tunslip6.c
86 lines
1.7 KiB
C
86 lines
1.7 KiB
C
/* Sensor routine */
|
|
|
|
#include "lib/sensors.h"
|
|
#include "dev/button-sensor.h"
|
|
|
|
#include <avr/interrupt.h>
|
|
#include "led.h" // debug
|
|
|
|
const struct sensors_sensor button_sensor;
|
|
|
|
static struct timer debouncetimer;
|
|
static int status(int type);
|
|
static int enabled = 0;
|
|
struct sensors_sensor *sensors[1];
|
|
unsigned char sensors_flags[1];
|
|
|
|
#define BUTTON_BIT INTF4
|
|
#define BUTTON_CHECK_IRQ() (EIFR & BUTTON_BIT) ? 0 : 1
|
|
|
|
#define PRINTF(...) printf(__VA_ARGS__)
|
|
/*---------------------------------------------------------------------------*/
|
|
ISR(INT4_vect)
|
|
{
|
|
|
|
// leds_toggle(LEDS_RED);
|
|
|
|
if(BUTTON_CHECK_IRQ()) {
|
|
if(timer_expired(&debouncetimer)) {
|
|
// led1_on();
|
|
timer_set(&debouncetimer, CLOCK_SECOND / 8);
|
|
sensors_changed(&button_sensor);
|
|
// led1_off();
|
|
}
|
|
}
|
|
|
|
}
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
static int
|
|
value(int type)
|
|
{
|
|
return (PINE & _BV(PE4) ? 0 : 1) || !timer_expired(&debouncetimer);
|
|
|
|
//return 0;
|
|
}
|
|
|
|
static int
|
|
configure(int type, int c)
|
|
{
|
|
switch (type) {
|
|
case SENSORS_ACTIVE:
|
|
if (c) {
|
|
if(!status(SENSORS_ACTIVE)) {
|
|
// led1_on();
|
|
timer_set(&debouncetimer, 0);
|
|
DDRE |= (0<<DDE4); // Set pin as input
|
|
PORTE |= (1<<PORTE4); // Set port PORTE bint 5 with pullup resistor
|
|
EICRB |= (1<<ISC40); // For falling edge
|
|
EIMSK |= (1<<INT4); // Set int
|
|
enabled = 1;
|
|
sei();
|
|
// led1_off();
|
|
}
|
|
} else {
|
|
enabled = 0;
|
|
EIMSK &= ~(1<<INT4); // clear int
|
|
}
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
status(int type)
|
|
{
|
|
switch (type) {
|
|
case SENSORS_ACTIVE:
|
|
case SENSORS_READY:
|
|
return enabled;//(EIMSK & (1<<INT5) ? 0 : 1);//BUTTON_IRQ_ENABLED();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
SENSORS_SENSOR(button_sensor, BUTTON_SENSOR,
|
|
value, configure, status);
|
|
|