Rtos API example

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "test_env.h"
00003 
00004 #if !DEVICE_I2CSLAVE
00005   #error [NOT_SUPPORTED] I2C Slave is not supported
00006 #endif
00007 
00008 #define SIZE (10)
00009 #define ADDR (0x90)
00010 
00011 #if defined(TARGET_KL25Z)
00012 I2CSlave slave(PTE0, PTE1);
00013 #elif defined(TARGET_LPC4088)
00014 I2CSlave slave(p9, p10);
00015 #elif defined(TARGET_SAMR21G18A)
00016 I2CSlave slave(PA16, PA17);
00017 #elif defined(TARGET_SAMD21J18A) || defined(TARGET_SAMD21G18A) || defined(TARGET_SAML21J18A)
00018 I2CSlave slave(PA08, PA09);
00019 #elif defined(TARGET_NUCLEO_F446RE)
00020 I2CSlave slave(PB_3, PB_10); // I2C_2 (Arduino: D3/D6)
00021 #elif defined(TARGET_NUCLEO_F429ZI)
00022 I2CSlave slave(PB_11, PB_10); // I2C_2
00023 #elif defined(TARGET_FF_ARDUINO)
00024 I2CSlave slave(I2C_SDA, I2C_SCL);
00025 #elif defined(TARGET_SAMG55J19)
00026 I2CSlave slave(PA10, PA09);
00027 #else
00028 I2CSlave slave(p28, p27);
00029 #endif
00030 
00031  int main() {
00032      char buf[SIZE];
00033 
00034      slave.address(ADDR);
00035 
00036      while (1) {
00037          int i = slave.receive();
00038          switch (i) {
00039              case I2CSlave::ReadAddressed:
00040                  slave.write(buf, SIZE);
00041                  for(int i = 0; i < SIZE; i++){
00042                 }
00043                  break;
00044              case I2CSlave::WriteAddressed:
00045                  slave.read(buf, SIZE);
00046                  for(int i = 0; i < SIZE; i++){
00047                     buf[i]++;
00048                 }
00049                  break;
00050          }
00051      }
00052  }