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_I2C
00005   #error [NOT_SUPPORTED] I2C is not supported
00006 #endif
00007 
00008 #define SIZE (10)
00009 #define ADDR (0x90)
00010 
00011 #if defined(TARGET_KL25Z)
00012 I2C i2c(PTE0, PTE1);
00013 #elif defined(TARGET_nRF51822)
00014 I2C i2c(p22,p20);
00015 #elif defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F429ZI) || defined(TARGET_NUCLEO_F446RE)
00016 #define TEST_SDA_PIN PB_9
00017 #define TEST_SCL_PIN PB_8
00018 I2C i2c(TEST_SDA_PIN, TEST_SCL_PIN); // I2C_1 (Arduino: D14/D15)
00019 #elif defined(TARGET_FF_ARDUINO) || defined(TARGET_MAXWSNENV)
00020 I2C i2c(I2C_SDA, I2C_SCL);
00021 #elif defined(TARGET_EFM32LG_STK3600) || defined(TARGET_EFM32GG_STK3700) || defined(TARGET_EFM32WG_STK3800)
00022 #define TEST_SDA_PIN PD6
00023 #define TEST_SCL_PIN PD7
00024 I2C i2c(TEST_SDA_PIN, TEST_SCL_PIN);
00025 #elif defined(TARGET_EFM32ZG_STK3200)
00026 #define TEST_SDA_PIN PE12
00027 #define TEST_SCL_PIN PE13
00028 I2C i2c(TEST_SDA_PIN, TEST_SCL_PIN);
00029 #elif defined(TARGET_EFM32HG_STK3400)
00030 #define TEST_SDA_PIN PD6
00031 #define TEST_SCL_PIN PD7
00032 I2C i2c(TEST_SDA_PIN, TEST_SCL_PIN);
00033 #elif defined(TARGET_EFM32PG_STK3401)
00034 #define TEST_SDA_PIN PC10
00035 #define TEST_SCL_PIN PC11
00036 I2C i2c(TEST_SDA_PIN, TEST_SCL_PIN);
00037 #elif defined(TARGET_SAMR21G18A)
00038 #define TEST_SDA_PIN PA16
00039 #define TEST_SCL_PIN PA17
00040 I2C i2c(TEST_SDA_PIN, TEST_SCL_PIN);
00041 #elif defined(TARGET_SAMD21J18A) || defined(TARGET_SAMD21G18A) || defined(TARGET_SAML21J18A)
00042 #define TEST_SDA_PIN PA08
00043 #define TEST_SCL_PIN PA09
00044 I2C i2c(TEST_SDA_PIN, TEST_SCL_PIN);
00045 #elif defined(TARGET_SAMG55J19)
00046 #define TEST_SDA_PIN PA10
00047 #define TEST_SCL_PIN PA09
00048 I2C i2c(TEST_SDA_PIN, TEST_SCL_PIN);
00049 #else
00050 I2C i2c(p28, p27);
00051 #endif
00052 
00053 int main() {
00054     bool success = true;
00055     char buf[] = {3, 2, 1, 4, 5, 6, 7, 8, 9, 10};
00056     char res[SIZE];
00057 
00058     i2c.write(ADDR, buf, SIZE);
00059     i2c.read(ADDR, res, SIZE);
00060 
00061     // here should be buf[all]++
00062     i2c.write(ADDR, res, SIZE);
00063     i2c.read(ADDR, res, SIZE);
00064 
00065     // here should be buf[all]+=2
00066     i2c.write(ADDR, res, SIZE);
00067     i2c.write(ADDR, res, SIZE);
00068 
00069     // here should be buf[all]+=3
00070     i2c.read(ADDR, res, SIZE);
00071     i2c.read(ADDR, res, SIZE);
00072 
00073     for(int i = 0; i < SIZE; i++) {
00074         if (res[i] != (buf[i] + 3)) {
00075             success = false;
00076             break;
00077         }
00078     }
00079 
00080     notify_completion(success);
00081 }