final

Dependencies:   Servo TSI mbed-rtos mbed

main.cpp

Committer:
backman
Date:
2016-12-02
Revision:
0:ab66364231c8

File content as of revision 0:ab66364231c8:

#include "mbed.h"
#include "Servo.h"
#include "TSISensor.h"
#include "rtos.h"
DigitalOut ledR(LED1);
DigitalOut ledG(LED2);
DigitalOut ledB(LED3);

I2CSlave slave(PTE0,PTE1);
Servo s(PTB0); 



TSISensor tsi;


 bool strCmp(char*a, char*b){
     
     
     
     int ptr=0;
     bool flag=true;
     for(;a[ptr]!='\0'||b[ptr]!='\0';ptr++){
        if(a[ptr]!=b[ptr]){ 
         flag=false; 
         break;
        }
     }
     
     
     return flag;
     
}
 
 
void ledCtl(char* str){
 
    if(strCmp(str,"R")){
        ledR=0;
       
    }
    else if(strCmp(str,"G"))
        ledG=0;
    else if(strCmp(str,"B")) 
        ledB=0;
    else if(strCmp(str,"T"))
        ledR=1;
    else if(strCmp(str,"H"))
        ledG=1;
    else if(strCmp(str,"N"))
        ledB=1;
    else{
        ledR=ledG=ledB=1;    
        
    }
        
 } 


void servoCtl(char* str){
    float ang= (float) str[0];
    s.angle(ang);
        
        
 } 
 
 
 
void ble_i2c(void const *args) {
  
    char buf[20];
    char msg[] = "Backman!";
    slave.address(0xBA);
      
   
    while (true) {
        
        int i = slave.receive();
        switch (i) {
            case I2CSlave::ReadAddressed:
                 slave.write(msg, strlen(msg) + 1); // Includes null char
                 break;
            case I2CSlave::WriteGeneral:
                 slave.read(buf, 20);
                 printf("Read G: %s\n", buf);
                 break;
            case I2CSlave::WriteAddressed:
            
                 slave.read(buf, 20);    
                 //ledCtl(buf);
                 servoCtl(buf);
                 printf("Read A: %s\r\n", buf);
                 break;
        }
        for(int i = 0; i < 20; i++) buf[i] = 0;    // Clear buffer
        
        Thread::wait(50);
    }



} 
 
 
 
 
 
 
 
int main() {
    
    
    ledR=ledG=ledB=1;
   // Thread thread(ble_i2c);
    
    s.angle(0);
    
    char buf[20];
    char msg[] = "Backman!";
    slave.address(0xBA);
   
       
    while (true) {
        
        int i = slave.receive();
        switch (i) {
            case I2CSlave::ReadAddressed:
                 slave.write(msg, strlen(msg) + 1); // Includes null char
                 break;
            case I2CSlave::WriteGeneral:
                 slave.read(buf, 20);
                 printf("Read G: %s\n", buf);
                 break;
            case I2CSlave::WriteAddressed:
            
                 slave.read(buf, 20);    
                 //ledCtl(buf);
                 servoCtl(buf);
                 printf("Read A: %s\r\n", buf);
                 break;
        }
        for(int i = 0; i < 20; i++) buf[i] = 0;    // Clear buffer
        
       
    }
    
    
  
  
  return 0;
  
       
 }