V1

Fork of 446STM32_Print_PC_I2CS by LAXAN01

main.cpp

Committer:
Tanakacool
Date:
2017-11-06
Revision:
1:51fb8c086992
Parent:
0:8be7c91879df

File content as of revision 1:51fb8c086992:

#include <mbed.h>
 
I2CSlave slave(PC_9, PA_8);
DigitalOut myled(LED1);
Thread thread;
Serial pc(USBTX, USBRX);
 
void slave_thread(){
    char buffer[128];
    while(true){
        Thread::signal_wait(1);
        
        if(pc.readable()) {  
            slave.stop();
            pc.gets(buffer, 128);
            pc.printf("I got '%s'\n", buffer);
            printf("get_state osStatus: %d\n",thread.get_state ());
        }
    }
}
int main() {
   char all_buf[]="i'm here!";
   char buf[20];
   char msg[] = "Hi Master!, this is 0xA0 response";
   slave.address(0xA0);
   thread.start(slave_thread);
   while (1) {
       int i = slave.receive();
       if(i==1||i==2||i==3){
        thread.signal_clr(0);
        switch (i) {
           case I2CSlave::ReadAddressed:
               if(!slave.write(msg, strlen(msg) + 1)) // Includes null char
                slave.stop();
                printf("ReadAddressed\n");
                //slave.stop();
                thread.signal_set(1);
               break;
           case I2CSlave::WriteGeneral:
               if(!slave.write(all_buf, strlen(all_buf) + 1)) // Includes null char
                slave.stop();
                printf("i've received the command...\n");
                thread.signal_set(1);
               break;
           case I2CSlave::WriteAddressed:
               slave.read(buf, 20);
               printf("master write to A: %s\n", buf);
               thread.signal_set(1);
               break;
       }
       }else{
          //thread.signal_set(1); 
        } 
       for(int i = 0; i < 10; i++) {
           buf[i] = 0;    // Clear buffer
           }
   }
}