/* EXAMPLE */
#include "mbed.h"
#include "HCSR04.h"

//D12 TRIGGER D11 ECHO

RawSerial pc(SERIAL_TX, SERIAL_RX,115200);
HCSR04 sensor(D3, D2,pc,0.5); 
Ticker repeat;

uint8_t rx_buffer[10];
int index=0;
volatile int flag;
void rx_ISR(void)
{
    char ch;
    ch = pc.getc();
    pc.putc(ch);
    rx_buffer[index++]=ch;
    if(ch==0x0D)
    {
        pc.putc(0x0A);
        rx_buffer[--index]='\0';
        index=0;
        flag=1;
    }
}





int main() {
    //pc.printf("select mode    (repeat / once): ");
    pc.attach(&rx_ISR);
    while(1) 
    {
        pc.printf("[0 : 10 times / 1: 1 times ] : ");
        flag = 0;
        while(flag !=1);
        
        if(strcmp((const char*)rx_buffer,"0")==0)
        {
            sensor.setMode(true);
            repeat.attach(callback(&sensor,&HCSR04::distance),0.5);
            while(!(sensor.getStatus()==10));
                        
            repeat.detach();
            sensor.setMode(false);
            sensor.clearStatus();
        }
        //pc.printf("end1?");
        if(strcmp((const char*)rx_buffer,"1")==0)
        {
            sensor.setMode(false);
      //      printf("Measure : 'M', Reselect : 'R'\r\n");
  //          while(!(strcmp((const char*)rx_buffer,"M")==0 | strcmp((const char*)rx_buffer,"R")==0));
  //          if(strcmp((const char*)rx_buffer,"R")==0)
  //          {}
   //         if(strcmp((const char*)rx_buffer,"M")==0)
   //         {
                sensor.distance();
                sensor.clearStatus();
    //        }
        }
    }
}