#include <stdio.h>
#include <robotcontrol.h>
void on_pause_press();
void on_pause_release();
int main()
{
if(rc_kill_existing_process(2.0)<-2) return -1;
if(rc_enable_signal_handler()==-1){
fprintf(stderr,"ERROR: failed to start signal handler\n");
return -1;
}
if(rc_button_init(RC_BTN_PIN_PAUSE, RC_BTN_POLARITY_NORM_HIGH,
RC_BTN_DEBOUNCE_DEFAULT_US)){
fprintf(stderr,"ERROR: failed to initialize pause button\n");
return -1;
}
rc_button_set_callbacks(RC_BTN_PIN_PAUSE,on_pause_press,on_pause_release);
rc_make_pid_file();
printf("\nPress and release pause button to turn green LED on and off\n");
printf("hold pause button down for 2 seconds to exit\n");
rc_set_state(RUNNING);
while(rc_get_state()!=EXITING){
if(rc_get_state()==RUNNING){
rc_led_set(RC_LED_GREEN, 1);
rc_led_set(RC_LED_RED, 0);
}
else{
rc_led_set(RC_LED_GREEN, 0);
rc_led_set(RC_LED_RED, 1);
}
rc_usleep(100000);
}
rc_led_set(RC_LED_GREEN, 0);
rc_led_set(RC_LED_RED, 0);
rc_led_cleanup();
rc_button_cleanup(); rc_remove_pid_file(); return 0;
}
void on_pause_release()
{
if(rc_get_state()==RUNNING) rc_set_state(PAUSED);
else if(rc_get_state()==PAUSED) rc_set_state(RUNNING);
return;
}
void on_pause_press()
{
int i;
const int samples = 100; const int us_wait = 2000000;
for(i=0;i<samples;i++){
rc_usleep(us_wait/samples);
if(rc_button_get_state(RC_BTN_PIN_PAUSE)==RC_BTN_STATE_RELEASED) return;
}
printf("long press detected, shutting down\n");
rc_set_state(EXITING);
return;
}