Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: ColorDetectorV2 ExternalFlashClient SNICInterface mbed-rtos mbed nsdl
Fork of EnvoyNespressoEndpoint by
main.cpp@19:85158f5a7775, 2015-07-06 (annotated)
- Committer:
- mbedAustin
- Date:
- Mon Jul 06 22:20:11 2015 +0000
- Revision:
- 19:85158f5a7775
- Parent:
- 18:a44666d32c2a
- Child:
- 20:4b6dcda0dcfd
Changed security type to match local network encryption
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| bridadan | 0:0782597771bc | 1 | #include "mbed.h" |
| mbedAustin | 12:01e87cce0aab | 2 | //#include "EthernetInterface.h" |
| mbedAustin | 12:01e87cce0aab | 3 | #include "SNIC_WifiInterface.h" |
| bridadan | 0:0782597771bc | 4 | #include "nsdl_support.h" |
| bridadan | 0:0782597771bc | 5 | #include "dbg.h" |
| bridadan | 0:0782597771bc | 6 | #include "GroveColourSensor.h" |
| bridadan | 0:0782597771bc | 7 | #include "ColorDetector.h" |
| bridadan | 0:0782597771bc | 8 | #include "color_detector.h" |
| bridadan | 7:b2df16ff5076 | 9 | #include <cmath> |
| mbedAustin | 12:01e87cce0aab | 10 | #include "Endpoint.h" |
| mbedAustin | 12:01e87cce0aab | 11 | #include "UDPSocket.h" |
| bridadan | 14:e5dc56c4e6f5 | 12 | #include "ExternalFlashClient.h" |
| bridadan | 0:0782597771bc | 13 | |
| bridadan | 0:0782597771bc | 14 | Serial pc(USBTX, USBRX); // tx, rx |
| bridadan | 0:0782597771bc | 15 | |
| bridadan | 0:0782597771bc | 16 | // **************************************************************************** |
| bridadan | 0:0782597771bc | 17 | // Configuration section |
| bridadan | 0:0782597771bc | 18 | |
| bridadan | 6:9e3f6270fcb0 | 19 | // I2C Settings |
| bridadan | 6:9e3f6270fcb0 | 20 | #define COLOR_SENSOR_SCL I2C_SCL |
| bridadan | 6:9e3f6270fcb0 | 21 | #define COLOR_SENSOR_SDA I2C_SDA |
| bridadan | 6:9e3f6270fcb0 | 22 | |
| bridadan | 14:e5dc56c4e6f5 | 23 | // Envoy Settings |
| mbedAustin | 16:ff5af00f3fb5 | 24 | uint32_t SSID_ADDRESS = 0x0100; |
| mbedAustin | 16:ff5af00f3fb5 | 25 | uint32_t KEY_ADDRESS = 0x0200; |
| bridadan | 14:e5dc56c4e6f5 | 26 | |
| bridadan | 14:e5dc56c4e6f5 | 27 | // Pins and SPI module for the external flash class |
| bridadan | 14:e5dc56c4e6f5 | 28 | PinName nSCS = D10; |
| bridadan | 14:e5dc56c4e6f5 | 29 | PinName SCLK = D13; |
| bridadan | 14:e5dc56c4e6f5 | 30 | PinName MOSI = D11; |
| bridadan | 14:e5dc56c4e6f5 | 31 | PinName MISO = D12; |
| bridadan | 14:e5dc56c4e6f5 | 32 | PinName SIRQ = D9; |
| bridadan | 14:e5dc56c4e6f5 | 33 | |
| bridadan | 14:e5dc56c4e6f5 | 34 | // buffer for storing reads |
| bridadan | 14:e5dc56c4e6f5 | 35 | uint8_t readBuffer[100]; |
| bridadan | 14:e5dc56c4e6f5 | 36 | block_t block = { .data = readBuffer, |
| bridadan | 14:e5dc56c4e6f5 | 37 | .length = sizeof(readBuffer), |
| bridadan | 14:e5dc56c4e6f5 | 38 | .offset = 0, |
| bridadan | 14:e5dc56c4e6f5 | 39 | .maxLength = sizeof(readBuffer) |
| bridadan | 14:e5dc56c4e6f5 | 40 | }; |
| bridadan | 14:e5dc56c4e6f5 | 41 | |
| mbedAustin | 16:ff5af00f3fb5 | 42 | volatile bool wifiProvisioned = false; |
| bridadan | 14:e5dc56c4e6f5 | 43 | |
| mbedAustin | 15:cbac93920f30 | 44 | // debug LEDs |
| mbedAustin | 15:cbac93920f30 | 45 | DigitalOut led1(LED1); |
| mbedAustin | 15:cbac93920f30 | 46 | |
| bridadan | 0:0782597771bc | 47 | // Ethernet configuration |
| bridadan | 0:0782597771bc | 48 | /* Define this to enable DHCP, otherwise manual address configuration is used */ |
| bridadan | 0:0782597771bc | 49 | #define DHCP |
| bridadan | 0:0782597771bc | 50 | |
| bridadan | 0:0782597771bc | 51 | /* Manual IP configurations, if DHCP not defined */ |
| bridadan | 0:0782597771bc | 52 | #define IP "0.0.0.0" |
| bridadan | 0:0782597771bc | 53 | #define MASK "255.255.255.0" |
| bridadan | 0:0782597771bc | 54 | #define GW "0.0.0.0" |
| bridadan | 0:0782597771bc | 55 | |
| mbedAustin | 15:cbac93920f30 | 56 | //#define DEMO_AP_SSID "demossid" |
| mbedAustin | 19:85158f5a7775 | 57 | #define DEMO_AP_SECURITY_TYPE e_SEC_WPA2_AES |
| mbedAustin | 15:cbac93920f30 | 58 | //#define DEMO_AP_SECUTIRY_KEY "mbed.org" |
| mbedAustin | 19:85158f5a7775 | 59 | //#define DEMO_AP_SECUTIRY_KEY_LEN 8 |
| mbedAustin | 12:01e87cce0aab | 60 | |
| mbedAustin | 15:cbac93920f30 | 61 | char SSID[50] = {0}; |
| mbedAustin | 15:cbac93920f30 | 62 | char KEY[50] = {0}; |
| mbedAustin | 15:cbac93920f30 | 63 | |
| bridadan | 0:0782597771bc | 64 | // NSP configuration |
| bridadan | 0:0782597771bc | 65 | /* Change this IP address to that of your mbed Device Server installation */ |
| mbedAustin | 19:85158f5a7775 | 66 | static const char* NSP_ADDRESS = "23.99.11.204"; // aka connector.mbed.org |
| bridadan | 0:0782597771bc | 67 | static const int NSP_PORT = 5683; |
| bridadan | 13:0edc42397e44 | 68 | char endpoint_name[] = "nespresso-machine-wifi"; |
| bridadan | 9:202680169650 | 69 | uint8_t ep_type[] = {"nespresso-endpoint"}; |
| bridadan | 9:202680169650 | 70 | char nsp_domain[] = "56645321f5e24c49908e42f4d71b9ccb"; |
| bridadan | 0:0782597771bc | 71 | uint8_t lifetime_ptr[] = {"1200"}; |
| bridadan | 0:0782597771bc | 72 | |
| bridadan | 0:0782597771bc | 73 | // **************************************************************************** |
| bridadan | 0:0782597771bc | 74 | // Ethernet initialization |
| mbedAustin | 12:01e87cce0aab | 75 | C_SNIC_WifiInterface eth( D1, D0, NC, NC, D3 ); |
| bridadan | 14:e5dc56c4e6f5 | 76 | |
| bridadan | 14:e5dc56c4e6f5 | 77 | // Envoy initialization |
| bridadan | 14:e5dc56c4e6f5 | 78 | SPI spi(MOSI, MISO, SCLK); |
| bridadan | 14:e5dc56c4e6f5 | 79 | ExternalFlashClient flash(spi, nSCS, SIRQ); |
| bridadan | 0:0782597771bc | 80 | |
| mbedAustin | 15:cbac93920f30 | 81 | // liveness LED |
| mbedAustin | 15:cbac93920f30 | 82 | void tickerISR() |
| mbedAustin | 15:cbac93920f30 | 83 | { |
| mbedAustin | 15:cbac93920f30 | 84 | led1 = !led1; |
| mbedAustin | 15:cbac93920f30 | 85 | } |
| mbedAustin | 15:cbac93920f30 | 86 | |
| bridadan | 0:0782597771bc | 87 | static void ethernet_init() |
| bridadan | 0:0782597771bc | 88 | { |
| mbedAustin | 12:01e87cce0aab | 89 | // Initialize Wi-Fi interface |
| mbedAustin | 12:01e87cce0aab | 90 | int s = eth.init(); |
| mbedAustin | 12:01e87cce0aab | 91 | |
| mbedAustin | 12:01e87cce0aab | 92 | NSDL_DEBUG("init();\r\n"); |
| mbedAustin | 12:01e87cce0aab | 93 | |
| mbedAustin | 12:01e87cce0aab | 94 | if( s != 0 ) { |
| mbedAustin | 12:01e87cce0aab | 95 | NSDL_DEBUG( "Could not initialise wifi\n\r" ); |
| mbedAustin | 12:01e87cce0aab | 96 | //return -1; |
| mbedAustin | 12:01e87cce0aab | 97 | } |
| mbedAustin | 12:01e87cce0aab | 98 | wait(0.5); |
| mbedAustin | 12:01e87cce0aab | 99 | s = eth.disconnect(); |
| mbedAustin | 12:01e87cce0aab | 100 | NSDL_DEBUG("disconnect();\r\n"); |
| mbedAustin | 12:01e87cce0aab | 101 | if( s != 0 ) { |
| mbedAustin | 12:01e87cce0aab | 102 | NSDL_DEBUG( "disconnect failed\r\n" ); |
| mbedAustin | 12:01e87cce0aab | 103 | //return -1; |
| mbedAustin | 12:01e87cce0aab | 104 | } |
| mbedAustin | 12:01e87cce0aab | 105 | |
| mbedAustin | 12:01e87cce0aab | 106 | wait(0.3); |
| mbedAustin | 12:01e87cce0aab | 107 | // Connect AP |
| mbedAustin | 15:cbac93920f30 | 108 | eth.connect( SSID |
| mbedAustin | 15:cbac93920f30 | 109 | , strlen(SSID) |
| mbedAustin | 12:01e87cce0aab | 110 | , DEMO_AP_SECURITY_TYPE |
| mbedAustin | 15:cbac93920f30 | 111 | , KEY |
| mbedAustin | 15:cbac93920f30 | 112 | , strlen(KEY)); |
| mbedAustin | 12:01e87cce0aab | 113 | NSDL_DEBUG("connect();\r\n"); |
| mbedAustin | 12:01e87cce0aab | 114 | wait(0.5); |
| mbedAustin | 12:01e87cce0aab | 115 | |
| mbedAustin | 12:01e87cce0aab | 116 | NSDL_DEBUG("IP Config();\r\n"); |
| mbedAustin | 12:01e87cce0aab | 117 | eth.setIPConfig( true ); |
| bridadan | 0:0782597771bc | 118 | |
| bridadan | 0:0782597771bc | 119 | NSDL_DEBUG("IP Address:%s ", eth.getIPAddress()); |
| bridadan | 0:0782597771bc | 120 | } |
| bridadan | 0:0782597771bc | 121 | |
| bridadan | 0:0782597771bc | 122 | // **************************************************************************** |
| bridadan | 0:0782597771bc | 123 | // NSP initialization |
| bridadan | 0:0782597771bc | 124 | |
| bridadan | 0:0782597771bc | 125 | UDPSocket server; |
| bridadan | 0:0782597771bc | 126 | Endpoint nsp; |
| bridadan | 0:0782597771bc | 127 | |
| bridadan | 0:0782597771bc | 128 | static void nsp_init() |
| bridadan | 0:0782597771bc | 129 | { |
| bridadan | 0:0782597771bc | 130 | server.init(); |
| bridadan | 0:0782597771bc | 131 | server.bind(NSP_PORT); |
| bridadan | 0:0782597771bc | 132 | |
| bridadan | 0:0782597771bc | 133 | nsp.set_address(NSP_ADDRESS, NSP_PORT); |
| mbedAustin | 12:01e87cce0aab | 134 | |
| bridadan | 0:0782597771bc | 135 | NSDL_DEBUG("name: %s", endpoint_name); |
| bridadan | 0:0782597771bc | 136 | NSDL_DEBUG("NSP=%s - port %d\n", NSP_ADDRESS, NSP_PORT); |
| bridadan | 0:0782597771bc | 137 | } |
| bridadan | 0:0782597771bc | 138 | |
| bridadan | 0:0782597771bc | 139 | // **************************************************************************** |
| bridadan | 0:0782597771bc | 140 | // Resource creation |
| bridadan | 0:0782597771bc | 141 | |
| bridadan | 0:0782597771bc | 142 | static int create_resources() |
| bridadan | 0:0782597771bc | 143 | { |
| bridadan | 0:0782597771bc | 144 | sn_nsdl_resource_info_s *resource_ptr = NULL; |
| mbedAustin | 12:01e87cce0aab | 145 | |
| bridadan | 0:0782597771bc | 146 | NSDL_DEBUG("Creating resources"); |
| bridadan | 0:0782597771bc | 147 | |
| bridadan | 0:0782597771bc | 148 | // Create resources |
| bridadan | 0:0782597771bc | 149 | resource_ptr = (sn_nsdl_resource_info_s*)nsdl_alloc(sizeof(sn_nsdl_resource_info_s)); |
| bridadan | 0:0782597771bc | 150 | if(!resource_ptr) |
| bridadan | 0:0782597771bc | 151 | return 0; |
| bridadan | 0:0782597771bc | 152 | memset(resource_ptr, 0, sizeof(sn_nsdl_resource_info_s)); |
| bridadan | 0:0782597771bc | 153 | |
| bridadan | 0:0782597771bc | 154 | resource_ptr->resource_parameters_ptr = (sn_nsdl_resource_parameters_s*)nsdl_alloc(sizeof(sn_nsdl_resource_parameters_s)); |
| mbedAustin | 12:01e87cce0aab | 155 | if(!resource_ptr->resource_parameters_ptr) { |
| bridadan | 0:0782597771bc | 156 | nsdl_free(resource_ptr); |
| bridadan | 0:0782597771bc | 157 | return 0; |
| bridadan | 0:0782597771bc | 158 | } |
| bridadan | 0:0782597771bc | 159 | memset(resource_ptr->resource_parameters_ptr, 0, sizeof(sn_nsdl_resource_parameters_s)); |
| bridadan | 0:0782597771bc | 160 | |
| bridadan | 0:0782597771bc | 161 | // Dynamic resources |
| mbedAustin | 18:a44666d32c2a | 162 | // create_color_detector_resource(resource_ptr); |
| mbedAustin | 12:01e87cce0aab | 163 | |
| bridadan | 0:0782597771bc | 164 | // Register with NSP |
| bridadan | 6:9e3f6270fcb0 | 165 | register_endpoint(true); |
| bridadan | 0:0782597771bc | 166 | |
| bridadan | 0:0782597771bc | 167 | nsdl_free(resource_ptr->resource_parameters_ptr); |
| bridadan | 0:0782597771bc | 168 | nsdl_free(resource_ptr); |
| bridadan | 0:0782597771bc | 169 | return 1; |
| bridadan | 0:0782597771bc | 170 | } |
| bridadan | 0:0782597771bc | 171 | |
| mbedAustin | 15:cbac93920f30 | 172 | //Read the Key |
| mbedAustin | 15:cbac93920f30 | 173 | void readDone2() |
| bridadan | 14:e5dc56c4e6f5 | 174 | { |
| bridadan | 14:e5dc56c4e6f5 | 175 | // copy string. first byte is the length |
| bridadan | 14:e5dc56c4e6f5 | 176 | uint8_t length = block.data[0]; |
| mbedAustin | 15:cbac93920f30 | 177 | memcpy(KEY, &(block.data[1]), length); |
| mbedAustin | 15:cbac93920f30 | 178 | KEY[length] = '\0'; |
| mbedAustin | 18:a44666d32c2a | 179 | |
| bridadan | 14:e5dc56c4e6f5 | 180 | // debug output the entire buffer |
| mbedAustin | 18:a44666d32c2a | 181 | for (int idx = 0; idx < block.length; idx++) { |
| mbedAustin | 18:a44666d32c2a | 182 | // zero out content to verify next read |
| bridadan | 14:e5dc56c4e6f5 | 183 | block.data[idx] = 0; |
| bridadan | 14:e5dc56c4e6f5 | 184 | } |
| mbedAustin | 15:cbac93920f30 | 185 | |
| mbedAustin | 15:cbac93920f30 | 186 | wifiProvisioned = true; |
| mbedAustin | 15:cbac93920f30 | 187 | } |
| mbedAustin | 15:cbac93920f30 | 188 | |
| mbedAustin | 15:cbac93920f30 | 189 | // Read the SSID |
| mbedAustin | 15:cbac93920f30 | 190 | void readDone() |
| mbedAustin | 15:cbac93920f30 | 191 | { |
| mbedAustin | 15:cbac93920f30 | 192 | // copy string. first byte is the length |
| mbedAustin | 15:cbac93920f30 | 193 | uint8_t length = block.data[0]; |
| mbedAustin | 15:cbac93920f30 | 194 | memcpy(SSID, &(block.data[1]), length); |
| mbedAustin | 15:cbac93920f30 | 195 | SSID[length] = '\0'; |
| mbedAustin | 18:a44666d32c2a | 196 | |
| mbedAustin | 15:cbac93920f30 | 197 | // debug output the entire buffer |
| mbedAustin | 18:a44666d32c2a | 198 | for (int idx = 0; idx < block.length; idx++) { |
| mbedAustin | 18:a44666d32c2a | 199 | // zero out content to verify next read |
| mbedAustin | 15:cbac93920f30 | 200 | block.data[idx] = 0; |
| mbedAustin | 15:cbac93920f30 | 201 | } |
| mbedAustin | 18:a44666d32c2a | 202 | |
| bridadan | 14:e5dc56c4e6f5 | 203 | wifiProvisioned = true; |
| bridadan | 14:e5dc56c4e6f5 | 204 | } |
| bridadan | 14:e5dc56c4e6f5 | 205 | |
| bridadan | 0:0782597771bc | 206 | // **************************************************************************** |
| bridadan | 0:0782597771bc | 207 | // Program entry point |
| bridadan | 0:0782597771bc | 208 | |
| bridadan | 0:0782597771bc | 209 | int main() |
| bridadan | 0:0782597771bc | 210 | { |
| mbedAustin | 15:cbac93920f30 | 211 | // LED is off when high |
| mbedAustin | 15:cbac93920f30 | 212 | led1 = 1; |
| mbedAustin | 18:a44666d32c2a | 213 | |
| mbedAustin | 15:cbac93920f30 | 214 | // blink LED1 |
| mbedAustin | 15:cbac93920f30 | 215 | Ticker ticker; |
| mbedAustin | 15:cbac93920f30 | 216 | ticker.attach(tickerISR, 1.0); |
| bridadan | 0:0782597771bc | 217 | NSDL_DEBUG("mbed Nespresso Demo\n"); |
| mbedAustin | 12:01e87cce0aab | 218 | |
| bridadan | 0:0782597771bc | 219 | // Begin Color Sensor init |
| mbedAustin | 12:01e87cce0aab | 220 | |
| mbedAustin | 18:a44666d32c2a | 221 | // First, ensure I2C bus is released by toggling clock (fixes reset errors) |
| mbedAustin | 16:ff5af00f3fb5 | 222 | // DigitalOut scl_dummy(COLOR_SENSOR_SCL); |
| mbedAustin | 12:01e87cce0aab | 223 | |
| mbedAustin | 16:ff5af00f3fb5 | 224 | // for (int i = 0; i < 100; i++) { |
| mbedAustin | 16:ff5af00f3fb5 | 225 | // scl_dummy = !scl_dummy; |
| mbedAustin | 16:ff5af00f3fb5 | 226 | // wait_us(2); |
| mbedAustin | 16:ff5af00f3fb5 | 227 | // } |
| mbedAustin | 12:01e87cce0aab | 228 | |
| mbedAustin | 18:a44666d32c2a | 229 | // Next, initialize I2C |
| mbedAustin | 16:ff5af00f3fb5 | 230 | // I2C i2c(COLOR_SENSOR_SDA, COLOR_SENSOR_SCL); |
| mbedAustin | 12:01e87cce0aab | 231 | |
| mbedAustin | 18:a44666d32c2a | 232 | // Create color sensor instance |
| mbedAustin | 16:ff5af00f3fb5 | 233 | // GroveColourSensor colorSensor(&i2c); |
| mbedAustin | 12:01e87cce0aab | 234 | |
| mbedAustin | 18:a44666d32c2a | 235 | // Various config |
| mbedAustin | 16:ff5af00f3fb5 | 236 | // colorSensor.powerUp(); |
| mbedAustin | 16:ff5af00f3fb5 | 237 | // colorSensor.setGain(1); |
| mbedAustin | 16:ff5af00f3fb5 | 238 | // colorSensor.setBlockRead(); |
| mbedAustin | 12:01e87cce0aab | 239 | |
| mbedAustin | 18:a44666d32c2a | 240 | // Create color detector |
| mbedAustin | 16:ff5af00f3fb5 | 241 | // ColorDetector detector(&colorSensor, 15, 3, 2, 256, 4); |
| mbedAustin | 16:ff5af00f3fb5 | 242 | // detector.setBaseline(); |
| mbedAustin | 12:01e87cce0aab | 243 | |
| mbedAustin | 18:a44666d32c2a | 244 | // Pass reference to color detector |
| mbedAustin | 16:ff5af00f3fb5 | 245 | // set_color_detector(&detector); |
| mbedAustin | 18:a44666d32c2a | 246 | // |
| mbedAustin | 15:cbac93920f30 | 247 | printf("read SSID / KEY from flash\r\n"); |
| mbedAustin | 15:cbac93920f30 | 248 | flash.read(SSID_ADDRESS, &block, readDone); |
| mbedAustin | 18:a44666d32c2a | 249 | |
| mbedAustin | 16:ff5af00f3fb5 | 250 | // wait for SSID to be read from Nordic chip |
| bridadan | 14:e5dc56c4e6f5 | 251 | while(!wifiProvisioned) { |
| mbedAustin | 18:a44666d32c2a | 252 | //printf("wait\r\n"); |
| bridadan | 14:e5dc56c4e6f5 | 253 | } |
| mbedAustin | 18:a44666d32c2a | 254 | printf("SSID Provisioned Succesfully: ssid= %s\n\r",SSID); |
| mbedAustin | 18:a44666d32c2a | 255 | wifiProvisioned = false; |
| mbedAustin | 18:a44666d32c2a | 256 | wait(1); // Dont know why this has to be here, but it does, if I dont do it it doesnt work. |
| mbedAustin | 18:a44666d32c2a | 257 | |
| mbedAustin | 18:a44666d32c2a | 258 | // now read the KEY |
| mbedAustin | 16:ff5af00f3fb5 | 259 | flash.read(KEY_ADDRESS, &block, readDone2); |
| mbedAustin | 16:ff5af00f3fb5 | 260 | // wait for SSID to be read from Nordic chip |
| mbedAustin | 16:ff5af00f3fb5 | 261 | while(!wifiProvisioned) { |
| mbedAustin | 18:a44666d32c2a | 262 | //printf("wait\r\n"); |
| mbedAustin | 16:ff5af00f3fb5 | 263 | } |
| mbedAustin | 18:a44666d32c2a | 264 | |
| mbedAustin | 15:cbac93920f30 | 265 | printf("ssid: %s, key: %s\r\n", SSID,KEY); |
| mbedAustin | 18:a44666d32c2a | 266 | |
| mbedAustin | 15:cbac93920f30 | 267 | // Ignore rest of program, just for development, it breaks before you get here |
| mbedAustin | 18:a44666d32c2a | 268 | // while(true) {} |
| mbedAustin | 12:01e87cce0aab | 269 | |
| mbedAustin | 18:a44666d32c2a | 270 | // Initialize Ethernet interface first |
| mbedAustin | 18:a44666d32c2a | 271 | ethernet_init(); |
| mbedAustin | 12:01e87cce0aab | 272 | |
| mbedAustin | 18:a44666d32c2a | 273 | // Initialize NSP node |
| mbedAustin | 18:a44666d32c2a | 274 | nsp_init(); |
| mbedAustin | 12:01e87cce0aab | 275 | |
| mbedAustin | 16:ff5af00f3fb5 | 276 | // // Initialize NSDL stack |
| mbedAustin | 18:a44666d32c2a | 277 | nsdl_init(); |
| mbedAustin | 12:01e87cce0aab | 278 | |
| mbedAustin | 18:a44666d32c2a | 279 | // Create NSDL resources |
| mbedAustin | 18:a44666d32c2a | 280 | create_resources(); |
| mbedAustin | 12:01e87cce0aab | 281 | |
| mbedAustin | 18:a44666d32c2a | 282 | nsdl_event_loop_init(); |
| mbedAustin | 12:01e87cce0aab | 283 | |
| bridadan | 0:0782597771bc | 284 | while(true) { |
| mbedAustin | 18:a44666d32c2a | 285 | // Check if any nsdl events need to be handled |
| mbedAustin | 18:a44666d32c2a | 286 | nsdl_event_loop_run_once(); |
| mbedAustin | 12:01e87cce0aab | 287 | |
| mbedAustin | 16:ff5af00f3fb5 | 288 | // // Sample the color detector and potentially send samples to mDS |
| mbedAustin | 16:ff5af00f3fb5 | 289 | // run_color_detector(); |
| bridadan | 0:0782597771bc | 290 | } |
| bridadan | 0:0782597771bc | 291 | } |
