Demo starter application to connect WiGo to NSP and expose on-board sensors

Dependencies:   NVIC_set_all_priorities cc3000_hostdriver_mbedsocket mbed nsdl_lib TEMT6200 TSI Wi-Go_eCompass_Lib_V3 WiGo_BattCharger

This is the mbed project for the IoT World Hackathon event, June 17th and 18th in Palo Also.

The setup instructions for participants are at the Setup page of this wiki:

http://mbed.org/teams/MBED_DEMOS/code/IoT_World_Hackathon_WiGo_NSP_Demo/wiki/Setup-Guide-for-the-IoT-World-Hackathon

Committer:
michaeljkoster
Date:
Sun Jun 15 17:31:17 2014 +0000
Revision:
11:9daf07113ef6
Parent:
10:948f99b285c4
Child:
17:b4cdafc4241d
RGB LED resource added but using only red due to bug when multiple enabled

Who changed what in which revision?

UserRevisionLine numberNew contents of line
michaeljkoster 11:9daf07113ef6 1 // Magnetometer resource implementation
michaeljkoster 10:948f99b285c4 2
michaeljkoster 10:948f99b285c4 3 #include "mbed.h"
michaeljkoster 10:948f99b285c4 4 #include "nsdl_support.h"
michaeljkoster 10:948f99b285c4 5 #include "Wi-Go_eCompass_Lib_V3.h"
michaeljkoster 10:948f99b285c4 6
michaeljkoster 10:948f99b285c4 7 #define MAGNET_X_RES_ID "3314/0/0"
michaeljkoster 10:948f99b285c4 8 #define MAGNET_Y_RES_ID "3314/0/1"
michaeljkoster 10:948f99b285c4 9 #define MAGNET_Z_RES_ID "3314/0/2"
michaeljkoster 10:948f99b285c4 10 #define COMPASS_RES_ID "3314/0/3"
michaeljkoster 10:948f99b285c4 11
michaeljkoster 10:948f99b285c4 12 extern Serial pc;
michaeljkoster 10:948f99b285c4 13 extern axis6_t axis6;
michaeljkoster 10:948f99b285c4 14 char mx[7];
michaeljkoster 10:948f99b285c4 15 char my[7];
michaeljkoster 10:948f99b285c4 16 char mz[7];
michaeljkoster 10:948f99b285c4 17 char compass[7];
michaeljkoster 10:948f99b285c4 18
michaeljkoster 10:948f99b285c4 19 /* Only GET method allowed */
michaeljkoster 10:948f99b285c4 20
michaeljkoster 10:948f99b285c4 21 static uint8_t magnet_x_resource_cb(sn_coap_hdr_s *received_coap_ptr, sn_nsdl_addr_s *address, sn_proto_info_s * proto)
michaeljkoster 10:948f99b285c4 22 {
michaeljkoster 10:948f99b285c4 23 sn_coap_hdr_s *coap_res_ptr = 0;
michaeljkoster 10:948f99b285c4 24 sprintf(mx,"%3.1f", axis6.fUTmx);
michaeljkoster 10:948f99b285c4 25 pc.printf("magnet x callback\r\n");
michaeljkoster 10:948f99b285c4 26 pc.printf("magnet x %s\r\n", mx);
michaeljkoster 10:948f99b285c4 27
michaeljkoster 10:948f99b285c4 28 if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_GET)
michaeljkoster 10:948f99b285c4 29 {
michaeljkoster 10:948f99b285c4 30 coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CONTENT);
michaeljkoster 10:948f99b285c4 31
michaeljkoster 10:948f99b285c4 32 coap_res_ptr->payload_len = strlen(mx);
michaeljkoster 10:948f99b285c4 33 coap_res_ptr->payload_ptr = (uint8_t*)mx;
michaeljkoster 10:948f99b285c4 34 sn_nsdl_send_coap_message(address, coap_res_ptr);
michaeljkoster 10:948f99b285c4 35 }
michaeljkoster 10:948f99b285c4 36
michaeljkoster 10:948f99b285c4 37 sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr);
michaeljkoster 10:948f99b285c4 38
michaeljkoster 10:948f99b285c4 39 return 0;
michaeljkoster 10:948f99b285c4 40 }
michaeljkoster 10:948f99b285c4 41
michaeljkoster 10:948f99b285c4 42 static uint8_t magnet_y_resource_cb(sn_coap_hdr_s *received_coap_ptr, sn_nsdl_addr_s *address, sn_proto_info_s * proto)
michaeljkoster 10:948f99b285c4 43 {
michaeljkoster 10:948f99b285c4 44 sn_coap_hdr_s *coap_res_ptr = 0;
michaeljkoster 10:948f99b285c4 45 sprintf(my,"%3.1f", axis6.fUTmy);
michaeljkoster 10:948f99b285c4 46 pc.printf("magnet y callback\r\n");
michaeljkoster 10:948f99b285c4 47 pc.printf("magnet y %s\r\n", my);
michaeljkoster 10:948f99b285c4 48
michaeljkoster 10:948f99b285c4 49 if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_GET)
michaeljkoster 10:948f99b285c4 50 {
michaeljkoster 10:948f99b285c4 51 coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CONTENT);
michaeljkoster 10:948f99b285c4 52
michaeljkoster 10:948f99b285c4 53 coap_res_ptr->payload_len = strlen(my);
michaeljkoster 10:948f99b285c4 54 coap_res_ptr->payload_ptr = (uint8_t*)my;
michaeljkoster 10:948f99b285c4 55 sn_nsdl_send_coap_message(address, coap_res_ptr);
michaeljkoster 10:948f99b285c4 56 }
michaeljkoster 10:948f99b285c4 57
michaeljkoster 10:948f99b285c4 58 sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr);
michaeljkoster 10:948f99b285c4 59
michaeljkoster 10:948f99b285c4 60 return 0;
michaeljkoster 10:948f99b285c4 61 }
michaeljkoster 10:948f99b285c4 62
michaeljkoster 10:948f99b285c4 63 static uint8_t magnet_z_resource_cb(sn_coap_hdr_s *received_coap_ptr, sn_nsdl_addr_s *address, sn_proto_info_s * proto)
michaeljkoster 10:948f99b285c4 64 {
michaeljkoster 10:948f99b285c4 65 sn_coap_hdr_s *coap_res_ptr = 0;
michaeljkoster 10:948f99b285c4 66 sprintf(mz,"%3.1f", axis6.fUTmz);
michaeljkoster 10:948f99b285c4 67 pc.printf("magnet z callback\r\n");
michaeljkoster 10:948f99b285c4 68 pc.printf("magnet z %s\r\n", mz);
michaeljkoster 10:948f99b285c4 69
michaeljkoster 10:948f99b285c4 70 if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_GET)
michaeljkoster 10:948f99b285c4 71 {
michaeljkoster 10:948f99b285c4 72 coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CONTENT);
michaeljkoster 10:948f99b285c4 73
michaeljkoster 10:948f99b285c4 74 coap_res_ptr->payload_len = strlen(mz);
michaeljkoster 10:948f99b285c4 75 coap_res_ptr->payload_ptr = (uint8_t*)mz;
michaeljkoster 10:948f99b285c4 76 sn_nsdl_send_coap_message(address, coap_res_ptr);
michaeljkoster 10:948f99b285c4 77 }
michaeljkoster 10:948f99b285c4 78
michaeljkoster 10:948f99b285c4 79 sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr);
michaeljkoster 10:948f99b285c4 80
michaeljkoster 10:948f99b285c4 81 return 0;
michaeljkoster 10:948f99b285c4 82 }
michaeljkoster 10:948f99b285c4 83
michaeljkoster 10:948f99b285c4 84 static uint8_t compass_resource_cb(sn_coap_hdr_s *received_coap_ptr, sn_nsdl_addr_s *address, sn_proto_info_s * proto)
michaeljkoster 10:948f99b285c4 85 {
michaeljkoster 10:948f99b285c4 86 sn_coap_hdr_s *coap_res_ptr = 0;
michaeljkoster 10:948f99b285c4 87 sprintf(compass,"%d", axis6.compass);
michaeljkoster 10:948f99b285c4 88 pc.printf("compass callback\r\n");
michaeljkoster 10:948f99b285c4 89 pc.printf("compass %s\r\n", compass);
michaeljkoster 10:948f99b285c4 90
michaeljkoster 10:948f99b285c4 91 if(received_coap_ptr->msg_code == COAP_MSG_CODE_REQUEST_GET)
michaeljkoster 10:948f99b285c4 92 {
michaeljkoster 10:948f99b285c4 93 coap_res_ptr = sn_coap_build_response(received_coap_ptr, COAP_MSG_CODE_RESPONSE_CONTENT);
michaeljkoster 10:948f99b285c4 94
michaeljkoster 10:948f99b285c4 95 coap_res_ptr->payload_len = strlen(compass);
michaeljkoster 10:948f99b285c4 96 coap_res_ptr->payload_ptr = (uint8_t*)compass;
michaeljkoster 10:948f99b285c4 97 sn_nsdl_send_coap_message(address, coap_res_ptr);
michaeljkoster 10:948f99b285c4 98 }
michaeljkoster 10:948f99b285c4 99
michaeljkoster 10:948f99b285c4 100 sn_coap_parser_release_allocated_coap_msg_mem(coap_res_ptr);
michaeljkoster 10:948f99b285c4 101
michaeljkoster 10:948f99b285c4 102 return 0;
michaeljkoster 10:948f99b285c4 103 }
michaeljkoster 10:948f99b285c4 104
michaeljkoster 10:948f99b285c4 105 int create_magnet_resource(sn_nsdl_resource_info_s *resource_ptr)
michaeljkoster 10:948f99b285c4 106 {
michaeljkoster 10:948f99b285c4 107 nsdl_create_dynamic_resource(resource_ptr, sizeof(MAGNET_X_RES_ID)-1, (uint8_t*)MAGNET_X_RES_ID, 0, 0, 0, &magnet_x_resource_cb, (SN_GRS_GET_ALLOWED));
michaeljkoster 10:948f99b285c4 108 nsdl_create_dynamic_resource(resource_ptr, sizeof(MAGNET_Y_RES_ID)-1, (uint8_t*)MAGNET_Y_RES_ID, 0, 0, 0, &magnet_y_resource_cb, (SN_GRS_GET_ALLOWED));
michaeljkoster 10:948f99b285c4 109 nsdl_create_dynamic_resource(resource_ptr, sizeof(MAGNET_Z_RES_ID)-1, (uint8_t*)MAGNET_Z_RES_ID, 0, 0, 0, &magnet_z_resource_cb, (SN_GRS_GET_ALLOWED));
michaeljkoster 10:948f99b285c4 110 nsdl_create_dynamic_resource(resource_ptr, sizeof(COMPASS_RES_ID)-1, (uint8_t*)COMPASS_RES_ID, 0, 0, 0, &compass_resource_cb, (SN_GRS_GET_ALLOWED));
michaeljkoster 10:948f99b285c4 111 return 0;
michaeljkoster 10:948f99b285c4 112 }