Nespresso coffee demo working on the Arch Pro

Dependencies:   EthernetInterface mbed-rtos mbed nsdl rgb_sensor_buffer

Fork of mbed_nsdl by Nespresso RGB Sensor

Committer:
GeofferyOmlette
Date:
Wed Jun 04 15:39:11 2014 +0000
Revision:
0:345864e9ee85
Child:
2:88a30cc88a86
hello

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GeofferyOmlette 0:345864e9ee85 1 #include "mbed.h"
GeofferyOmlette 0:345864e9ee85 2 #include "EthernetInterface.h"
GeofferyOmlette 0:345864e9ee85 3 #include "C12832_lcd.h"
GeofferyOmlette 0:345864e9ee85 4 #include "nsdl_support.h"
GeofferyOmlette 0:345864e9ee85 5 #include "dbg.h"
GeofferyOmlette 0:345864e9ee85 6 // Include various resources
GeofferyOmlette 0:345864e9ee85 7 #include "temperature.h"
GeofferyOmlette 0:345864e9ee85 8 #include "light.h"
GeofferyOmlette 0:345864e9ee85 9 #include "gps.h"
GeofferyOmlette 0:345864e9ee85 10 #include "relay.h"
GeofferyOmlette 0:345864e9ee85 11
GeofferyOmlette 0:345864e9ee85 12 static C12832_LCD lcd;
GeofferyOmlette 0:345864e9ee85 13 Serial pc(USBTX, USBRX); // tx, rx
GeofferyOmlette 0:345864e9ee85 14
GeofferyOmlette 0:345864e9ee85 15 // ****************************************************************************
GeofferyOmlette 0:345864e9ee85 16 // Configuration section
GeofferyOmlette 0:345864e9ee85 17
GeofferyOmlette 0:345864e9ee85 18 // Ethernet configuration
GeofferyOmlette 0:345864e9ee85 19 /* Define this to enable DHCP, otherwise manual address configuration is used */
GeofferyOmlette 0:345864e9ee85 20 #define DHCP
GeofferyOmlette 0:345864e9ee85 21
GeofferyOmlette 0:345864e9ee85 22 /* Manual IP configurations, if DHCP not defined */
GeofferyOmlette 0:345864e9ee85 23 #define IP "10.45.0.206"
GeofferyOmlette 0:345864e9ee85 24 #define MASK "255.255.255.0"
GeofferyOmlette 0:345864e9ee85 25 #define GW "10.45.0.1"
GeofferyOmlette 0:345864e9ee85 26
GeofferyOmlette 0:345864e9ee85 27 // NSP configuration
GeofferyOmlette 0:345864e9ee85 28 /* Change this IP address to that of your NanoService Platform installation */
GeofferyOmlette 0:345864e9ee85 29 static const char* NSP_ADDRESS = "168.63.12.96"; /* demo NSP, web interface at http://nanoservice-demo.mbed.org*/
GeofferyOmlette 0:345864e9ee85 30 static const int NSP_PORT = 5683;
GeofferyOmlette 0:345864e9ee85 31 char endpoint_name[16] = "mbed-";
GeofferyOmlette 0:345864e9ee85 32 uint8_t ep_type[] = {"mbed_device"};
GeofferyOmlette 0:345864e9ee85 33 uint8_t lifetime_ptr[] = {"1200"};
GeofferyOmlette 0:345864e9ee85 34
GeofferyOmlette 0:345864e9ee85 35 // ****************************************************************************
GeofferyOmlette 0:345864e9ee85 36 // Ethernet initialization
GeofferyOmlette 0:345864e9ee85 37
GeofferyOmlette 0:345864e9ee85 38 EthernetInterface eth;
GeofferyOmlette 0:345864e9ee85 39
GeofferyOmlette 0:345864e9ee85 40 static void ethernet_init()
GeofferyOmlette 0:345864e9ee85 41 {
GeofferyOmlette 0:345864e9ee85 42 char mbed_uid[33]; // for creating unique name for the board
GeofferyOmlette 0:345864e9ee85 43
GeofferyOmlette 0:345864e9ee85 44 /* Initialize network */
GeofferyOmlette 0:345864e9ee85 45 #ifdef DHCP
GeofferyOmlette 0:345864e9ee85 46 NSDL_DEBUG("DHCP in use\r\n");
GeofferyOmlette 0:345864e9ee85 47 eth.init();
GeofferyOmlette 0:345864e9ee85 48 #else
GeofferyOmlette 0:345864e9ee85 49 eth.init(IP, MASK, GW);
GeofferyOmlette 0:345864e9ee85 50 #endif
GeofferyOmlette 0:345864e9ee85 51 if(eth.connect(30000) == 0)
GeofferyOmlette 0:345864e9ee85 52 pc.printf("Connect OK\n\r");
GeofferyOmlette 0:345864e9ee85 53
GeofferyOmlette 0:345864e9ee85 54 mbed_interface_uid(mbed_uid);
GeofferyOmlette 0:345864e9ee85 55 mbed_uid[32] = '\0';
GeofferyOmlette 0:345864e9ee85 56 strncat(endpoint_name, mbed_uid + 27, 15 - strlen(endpoint_name));
GeofferyOmlette 0:345864e9ee85 57
GeofferyOmlette 0:345864e9ee85 58 lcd.locate(0,11);
GeofferyOmlette 0:345864e9ee85 59 lcd.printf("IP:%s", eth.getIPAddress());
GeofferyOmlette 0:345864e9ee85 60
GeofferyOmlette 0:345864e9ee85 61 NSDL_DEBUG("IP Address:%s ", eth.getIPAddress());
GeofferyOmlette 0:345864e9ee85 62 }
GeofferyOmlette 0:345864e9ee85 63
GeofferyOmlette 0:345864e9ee85 64 // ****************************************************************************
GeofferyOmlette 0:345864e9ee85 65 // NSP initialization
GeofferyOmlette 0:345864e9ee85 66
GeofferyOmlette 0:345864e9ee85 67 UDPSocket server;
GeofferyOmlette 0:345864e9ee85 68 Endpoint nsp;
GeofferyOmlette 0:345864e9ee85 69
GeofferyOmlette 0:345864e9ee85 70 static void nsp_init()
GeofferyOmlette 0:345864e9ee85 71 {
GeofferyOmlette 0:345864e9ee85 72 server.init();
GeofferyOmlette 0:345864e9ee85 73 server.bind(NSP_PORT);
GeofferyOmlette 0:345864e9ee85 74
GeofferyOmlette 0:345864e9ee85 75 nsp.set_address(NSP_ADDRESS, NSP_PORT);
GeofferyOmlette 0:345864e9ee85 76
GeofferyOmlette 0:345864e9ee85 77 NSDL_DEBUG("name: %s", endpoint_name);
GeofferyOmlette 0:345864e9ee85 78 NSDL_DEBUG("NSP=%s - port %d\n", NSP_ADDRESS, NSP_PORT);
GeofferyOmlette 0:345864e9ee85 79
GeofferyOmlette 0:345864e9ee85 80 lcd.locate(0,22);
GeofferyOmlette 0:345864e9ee85 81 lcd.printf("EP name:%s\n", endpoint_name);
GeofferyOmlette 0:345864e9ee85 82 }
GeofferyOmlette 0:345864e9ee85 83
GeofferyOmlette 0:345864e9ee85 84 // ****************************************************************************
GeofferyOmlette 0:345864e9ee85 85 // Resource creation
GeofferyOmlette 0:345864e9ee85 86
GeofferyOmlette 0:345864e9ee85 87 static int create_resources()
GeofferyOmlette 0:345864e9ee85 88 {
GeofferyOmlette 0:345864e9ee85 89 sn_nsdl_resource_info_s *resource_ptr = NULL;
GeofferyOmlette 0:345864e9ee85 90 sn_nsdl_ep_parameters_s *endpoint_ptr = NULL;
GeofferyOmlette 0:345864e9ee85 91
GeofferyOmlette 0:345864e9ee85 92 NSDL_DEBUG("Creating resources");
GeofferyOmlette 0:345864e9ee85 93
GeofferyOmlette 0:345864e9ee85 94 /* Create resources */
GeofferyOmlette 0:345864e9ee85 95 resource_ptr = (sn_nsdl_resource_info_s*)nsdl_alloc(sizeof(sn_nsdl_resource_info_s));
GeofferyOmlette 0:345864e9ee85 96 if(!resource_ptr)
GeofferyOmlette 0:345864e9ee85 97 return 0;
GeofferyOmlette 0:345864e9ee85 98 memset(resource_ptr, 0, sizeof(sn_nsdl_resource_info_s));
GeofferyOmlette 0:345864e9ee85 99
GeofferyOmlette 0:345864e9ee85 100 resource_ptr->resource_parameters_ptr = (sn_nsdl_resource_parameters_s*)nsdl_alloc(sizeof(sn_nsdl_resource_parameters_s));
GeofferyOmlette 0:345864e9ee85 101 if(!resource_ptr->resource_parameters_ptr)
GeofferyOmlette 0:345864e9ee85 102 {
GeofferyOmlette 0:345864e9ee85 103 nsdl_free(resource_ptr);
GeofferyOmlette 0:345864e9ee85 104 return 0;
GeofferyOmlette 0:345864e9ee85 105 }
GeofferyOmlette 0:345864e9ee85 106 memset(resource_ptr->resource_parameters_ptr, 0, sizeof(sn_nsdl_resource_parameters_s));
GeofferyOmlette 0:345864e9ee85 107
GeofferyOmlette 0:345864e9ee85 108 // Static resources
GeofferyOmlette 0:345864e9ee85 109 nsdl_create_static_resource(resource_ptr, sizeof("dev/mfg")-1, (uint8_t*) "dev/mfg", 0, 0, (uint8_t*) "Sensinode", sizeof("Sensinode")-1);
GeofferyOmlette 0:345864e9ee85 110 nsdl_create_static_resource(resource_ptr, sizeof("dev/mdl")-1, (uint8_t*) "dev/mdl", 0, 0, (uint8_t*) "NSDL-C mbed device", sizeof("NSDL-C mbed device")-1);
GeofferyOmlette 0:345864e9ee85 111
GeofferyOmlette 0:345864e9ee85 112 // Dynamic resources
GeofferyOmlette 0:345864e9ee85 113 create_temperature_resource(resource_ptr);
GeofferyOmlette 0:345864e9ee85 114 create_light_resource(resource_ptr);
GeofferyOmlette 0:345864e9ee85 115 create_gps_resource(resource_ptr);
GeofferyOmlette 0:345864e9ee85 116 create_relay_resource(resource_ptr);
GeofferyOmlette 0:345864e9ee85 117
GeofferyOmlette 0:345864e9ee85 118 /* Register with NSP */
GeofferyOmlette 0:345864e9ee85 119 endpoint_ptr = nsdl_init_register_endpoint(endpoint_ptr, (uint8_t*)endpoint_name, ep_type, lifetime_ptr);
GeofferyOmlette 0:345864e9ee85 120 if(sn_nsdl_register_endpoint(endpoint_ptr) != 0)
GeofferyOmlette 0:345864e9ee85 121 pc.printf("NSP registering failed\r\n");
GeofferyOmlette 0:345864e9ee85 122 else
GeofferyOmlette 0:345864e9ee85 123 pc.printf("NSP registering OK\r\n");
GeofferyOmlette 0:345864e9ee85 124 nsdl_clean_register_endpoint(&endpoint_ptr);
GeofferyOmlette 0:345864e9ee85 125
GeofferyOmlette 0:345864e9ee85 126 nsdl_free(resource_ptr->resource_parameters_ptr);
GeofferyOmlette 0:345864e9ee85 127 nsdl_free(resource_ptr);
GeofferyOmlette 0:345864e9ee85 128 return 1;
GeofferyOmlette 0:345864e9ee85 129 }
GeofferyOmlette 0:345864e9ee85 130
GeofferyOmlette 0:345864e9ee85 131 // ****************************************************************************
GeofferyOmlette 0:345864e9ee85 132 // Program entry point
GeofferyOmlette 0:345864e9ee85 133
GeofferyOmlette 0:345864e9ee85 134 int main()
GeofferyOmlette 0:345864e9ee85 135 {
GeofferyOmlette 0:345864e9ee85 136 lcd.cls();
GeofferyOmlette 0:345864e9ee85 137 lcd.locate(0,0);
GeofferyOmlette 0:345864e9ee85 138 lcd.printf("mbed NanoService demo");
GeofferyOmlette 0:345864e9ee85 139 NSDL_DEBUG("mbed NanoService Example App 0.1\n");
GeofferyOmlette 0:345864e9ee85 140
GeofferyOmlette 0:345864e9ee85 141 // Initialize Ethernet interface first
GeofferyOmlette 0:345864e9ee85 142 ethernet_init();
GeofferyOmlette 0:345864e9ee85 143
GeofferyOmlette 0:345864e9ee85 144 // Initialize NSP node
GeofferyOmlette 0:345864e9ee85 145 nsp_init();
GeofferyOmlette 0:345864e9ee85 146
GeofferyOmlette 0:345864e9ee85 147 // Initialize NSDL stack
GeofferyOmlette 0:345864e9ee85 148 nsdl_init();
GeofferyOmlette 0:345864e9ee85 149
GeofferyOmlette 0:345864e9ee85 150 // Create NSDL resources
GeofferyOmlette 0:345864e9ee85 151 create_resources();
GeofferyOmlette 0:345864e9ee85 152
GeofferyOmlette 0:345864e9ee85 153 // Run the NSDL event loop (never returns)
GeofferyOmlette 0:345864e9ee85 154 nsdl_event_loop();
GeofferyOmlette 0:345864e9ee85 155 }