AMMP demonstration using Freescale FRDM-KL25Z and Adafruit CC3000 Arduino shield
Dependencies: MMA8451Q NVIC_set_all_priorities TSI cc3000_hostdriver_mbedsocket mbed
Fork of AxedaGo-Freescale by
Diff: main.cpp
- Revision:
- 4:3c2e21757a9c
- Parent:
- 3:ec0169cbc94d
- Child:
- 5:c99347399fb7
--- a/main.cpp Tue Oct 08 14:54:06 2013 +0000 +++ b/main.cpp Mon Jan 13 18:50:07 2014 +0000 @@ -16,31 +16,32 @@ #include "mbed.h" #include "cc3000.h" #include "main.h" +#include "TSISensor.h" +#include "MMA8451Q.h" //accelerometer +#include "TCPSocketConnection.h" -#include "HTTPClient.h" using namespace mbed_cc3000; -/* cc3000 module declaration specific for user's board. Check also init() */ -#if (MY_BOARD == WIGO) -cc3000 wifi(PTA16, PTA13, PTD0, SPI(PTD2, PTD3, PTC5), PORTA_IRQn); -Serial pc(USBTX, USBRX); -#elif (MY_BOARD == WIFI_DIPCORTEX) -cc3000 wifi(p28, p27, p30, SPI(p21, p14, p37), PIN_INT0_IRQn); -Serial pc(UART_TX, UART_RX); +/* cc3000 module declaration specific for user's board */ +#if (MY_BOARD == WIFI_SHEILD_ADAFRUIT) +cc3000 wifi(PTA12, PTA5, PTD0, SPI(PTD2, PTD3, PTD1), PORTA_IRQn); +Serial pc(USBTX, USBRX); // tx, rx #else #endif tUserFS user_info; -HTTPClient http; + char str[512]; -#ifndef CC3000_UNENCRYPTED_SMART_CONFIG - const uint8_t smartconfigkey[] = {0x73,0x6d,0x61,0x72,0x74,0x63,0x6f,0x6e,0x66,0x69,0x67,0x41,0x45,0x53,0x31,0x36}; -#else - const uint8_t smartconfigkey = 0; -#endif +MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); + +DigitalOut rled(LED_RED); +DigitalOut gled(LED_GREEN); +// DO NOT Use LED_BLUE - pin PTD1 already in use by WiFi chip + + /** * \brief Print cc3000 information @@ -79,32 +80,6 @@ } } -/** - * \brief Connect to SSID without security - * \param ssid Name of SSID - * \return none - */ -void connect_to_ssid(char *ssid) { - wifi.connect_open((uint8_t *)ssid); -} - -/** - * \brief First time configuration - * \param none - * \return none - */ -void do_FTC(void) { - printf("Running First Time Configuration \r\n"); - wifi.start_smart_config(smartconfigkey); - while (wifi.is_dhcp_configured() == false) { - wait_ms(500); - printf("Waiting for dhcp to be set. \r\n"); - } - user_info.FTC = 1; - wifi.set_user_file_info((uint8_t *)&user_info, sizeof(user_info)); - wifi._wlan.stop(); - printf("FTC finished.\n"); -} /** * \brief HTTP client demo @@ -112,105 +87,98 @@ * \return int */ int main() { - init(); /* board dependent init */ - pc.baud(115200); + rled = 1; + gled = 1; + TSISensor touchSensor; + const char* SERVER_ADDRESS = "dev6-connect.axeda.com"; + const int SERVER_PORT = 52689; + char *MODEL = "mbed"; + char *SERIAL_NUM = "xkcd321"; + char http_cmd[800]; + char buffer[800]; + int returnCode = 0; + int BGL=0; + TCPSocketConnection socket; + + float accels[3]; + float resting,reading; + float THRESHOLD = 0.15; + float position; + + + pc.printf("Starting up...\n"); + + + pc.printf("Before wifi.start...\n"); wifi.start(0); printf("cc3000 HTTP client demo. \r\n"); print_cc3000_info(); printf("Attempting SSID Connection. \r\n"); -#if (USE_SMART_CONFIG == 1) - if (user_info.FTC == 1) { - wifi._wlan.ioctl_set_connection_policy(0, 1, 1); - } else { - printf("Smart config is not set, starting configuration. \r\n"); - do_FTC(); - printf("Smart config is set. Please restart your board. \r\n"); - while(1); - } -#else + wifi._wlan.ioctl_set_connection_policy(0, 0, 0); -#ifndef CC3000_TINY_DRIVER -#ifdef AP_KEY + connect_to_ssid(SSID, AP_KEY, AP_SECURITY); -#else - connect_to_ssid(SSID); -#endif -#else - connect_to_ssid(SSID); -#endif -#endif - printf("DHCP request \r\n"); + + printf("send DHCP request \r\n"); + gled =0; + + while (wifi.is_dhcp_configured() == false) { + wait_ms(500); printf(" Waiting for dhcp to be set. \r\n"); + } + + gled = 1; rled = 0; tNetappIpconfigRetArgs ipinfo2; wifi.get_ip_config(&ipinfo2); // data is returned in the ipinfo2 structure printf("DHCP assigned IP Address = %d.%d.%d.%d \r\n", ipinfo2.aucIP[3], ipinfo2.aucIP[2], ipinfo2.aucIP[1], ipinfo2.aucIP[0]); - //GET data - printf("\r\nTrying to fetch page... \r\n"); - int ret = http.get("http://mbed.org/media/uploads/donatien/hello.txt", str, 128); - if (!ret) - { - printf("Page fetched successfully - read %d characters \r\n", strlen(str)); - printf("Result: %s \r\n", str); - } - else - { - printf("Error - ret = %d - HTTP return code = %d \r\n", ret, http.getHTTPResponseCode()); - } + wait(0.7); + acc.getAccAllAxis( accels ); + resting = abs(accels[0]) + abs(accels[1]) + abs(accels[2]); + printf("Set up resting accelerometer - %.2f\r\n", resting); + wait(0.1); - //POST data - HTTPMap map; - HTTPText inText(str, 512); - map.put("Hello", "World"); - map.put("test", "1234"); - printf(" \r\nTrying to post data... \r\n"); - ret = http.post("http://httpbin.org/post", map, &inText); - if (!ret) + while(1) { - printf("Executed POST successfully - read %d characters \r\n", strlen(str)); - printf("Result: %s \r\n", str); - } - else - { - printf("Error - ret = %d - HTTP return code = %d \r\n", ret, http.getHTTPResponseCode()); - } - //PUT data - strcpy(str, "This is a PUT test!"); - HTTPText outText(str); - //HTTPText inText(str, 512); - printf(" \r\nTrying to put resource... \r\n"); - ret = http.put("http://httpbin.org/put", outText, &inText); - if (!ret) - { - printf("Executed PUT successfully - read %d characters \r\n", strlen(str)); - printf("Result: %s \r\n", str); - } - else - { - printf("Error - ret = %d - HTTP return code = %d \r\n", ret, http.getHTTPResponseCode()); + acc.getAccAllAxis( accels ); + reading = abs(accels[0]) + abs(accels[1]) + abs(accels[2]); + if ( abs( resting - reading ) > THRESHOLD ){ + wait(0.1); + position = touchSensor.readPercentage(); + printf( "BUMPED resting %.2f read %.2f position %.2f \r\n", resting, reading, position ); + rled = 1; + gled = 1; + + printf("Before connect\r\n"); + while ( socket.connect(SERVER_ADDRESS, SERVER_PORT) < 0) { + printf("Unable to connect to (%s) on port (%d) \r\n", SERVER_ADDRESS, SERVER_PORT); + wait(1); + printf(" - retring to connect"); + } + printf( "connected"); + BGL = position * 300; + sprintf(http_cmd, "POST /ammp/data/1/%s!%s HTTP/1.1\r\nContent-type: application/json\r\nContent-Length: 52\r\n\r\n{\"data\":[{\"dataItems\":{\"bar\":\"camp\",\"BGL\":%d}}]}\r\n\r\n", MODEL, SERIAL_NUM, BGL); + socket.send_all(http_cmd, sizeof(http_cmd)-1); + + returnCode = socket.receive(buffer, sizeof(buffer)-1); + + buffer[returnCode] = '\0'; + printf("Sent->%s<-\r\n",http_cmd); + printf("Received %d chars from server:\n\r%s\n", returnCode, buffer); + + socket.close(); + printf("Socket closed\r\n"); + rled = 0; + gled = 0; + } + } - - //DELETE data - //HTTPText inText(str, 512); - printf(" \r\nTrying to delete resource... \r\n"); - ret = http.del("http://httpbin.org/delete", &inText); - if (!ret) - { - printf("Executed DELETE successfully - read %d characters \r\n", strlen(str)); - printf("Result: %s \r\n", str); - } - else - { - printf("Error - ret = %d - HTTP return code = %d \r\n", ret, http.getHTTPResponseCode()); - } - - printf("Demo completed. \r\n"); - wifi.disconnect(); + }