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:
bjblazkowicz
Date:
Fri Jul 18 10:47:23 2014 +0000
Revision:
6:8729a0db0e25
Parent:
4:ab3c8d25260e
Child:
8:27e94f52810b
Added buffered_rgb_resource. Resource is now array of up to 300 samples.

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 "nsdl_support.h"
GeofferyOmlette 0:345864e9ee85 4 #include "dbg.h"
GeofferyOmlette 2:88a30cc88a86 5 #include "nespresso.h"
bjblazkowicz 6:8729a0db0e25 6 #include "buffered_rgb_resource.h"
GeofferyOmlette 0:345864e9ee85 7
GeofferyOmlette 0:345864e9ee85 8 Serial pc(USBTX, USBRX); // tx, rx
GeofferyOmlette 0:345864e9ee85 9
GeofferyOmlette 0:345864e9ee85 10 // ****************************************************************************
GeofferyOmlette 0:345864e9ee85 11 // Configuration section
GeofferyOmlette 0:345864e9ee85 12
GeofferyOmlette 0:345864e9ee85 13 // Ethernet configuration
GeofferyOmlette 0:345864e9ee85 14 /* Define this to enable DHCP, otherwise manual address configuration is used */
GeofferyOmlette 0:345864e9ee85 15 #define DHCP
GeofferyOmlette 0:345864e9ee85 16
GeofferyOmlette 0:345864e9ee85 17 /* Manual IP configurations, if DHCP not defined */
GeofferyOmlette 0:345864e9ee85 18 #define IP "10.45.0.206"
GeofferyOmlette 0:345864e9ee85 19 #define MASK "255.255.255.0"
GeofferyOmlette 0:345864e9ee85 20 #define GW "10.45.0.1"
GeofferyOmlette 0:345864e9ee85 21
GeofferyOmlette 0:345864e9ee85 22 // NSP configuration
GeofferyOmlette 0:345864e9ee85 23 /* Change this IP address to that of your NanoService Platform installation */
bjblazkowicz 6:8729a0db0e25 24 static const char* NSP_ADDRESS = "23.99.96.113";
GeofferyOmlette 0:345864e9ee85 25 static const int NSP_PORT = 5683;
bjblazkowicz 4:ab3c8d25260e 26 char endpoint_name[] = "nespresso-client";
GeofferyOmlette 0:345864e9ee85 27 uint8_t ep_type[] = {"mbed_device"};
GeofferyOmlette 0:345864e9ee85 28 uint8_t lifetime_ptr[] = {"1200"};
GeofferyOmlette 0:345864e9ee85 29
GeofferyOmlette 0:345864e9ee85 30 // ****************************************************************************
GeofferyOmlette 0:345864e9ee85 31 // Ethernet initialization
GeofferyOmlette 0:345864e9ee85 32
GeofferyOmlette 0:345864e9ee85 33 EthernetInterface eth;
GeofferyOmlette 0:345864e9ee85 34
GeofferyOmlette 0:345864e9ee85 35 static void ethernet_init()
GeofferyOmlette 0:345864e9ee85 36 {
GeofferyOmlette 0:345864e9ee85 37 /* Initialize network */
GeofferyOmlette 0:345864e9ee85 38 #ifdef DHCP
GeofferyOmlette 0:345864e9ee85 39 NSDL_DEBUG("DHCP in use\r\n");
GeofferyOmlette 0:345864e9ee85 40 eth.init();
GeofferyOmlette 0:345864e9ee85 41 #else
GeofferyOmlette 0:345864e9ee85 42 eth.init(IP, MASK, GW);
GeofferyOmlette 0:345864e9ee85 43 #endif
bjblazkowicz 4:ab3c8d25260e 44 if(eth.connect(30000) == 0)
bjblazkowicz 4:ab3c8d25260e 45 {
GeofferyOmlette 0:345864e9ee85 46 pc.printf("Connect OK\n\r");
bjblazkowicz 4:ab3c8d25260e 47 }
GeofferyOmlette 0:345864e9ee85 48
GeofferyOmlette 0:345864e9ee85 49 NSDL_DEBUG("IP Address:%s ", eth.getIPAddress());
GeofferyOmlette 0:345864e9ee85 50 }
GeofferyOmlette 0:345864e9ee85 51
GeofferyOmlette 0:345864e9ee85 52 // ****************************************************************************
GeofferyOmlette 0:345864e9ee85 53 // NSP initialization
GeofferyOmlette 0:345864e9ee85 54
GeofferyOmlette 0:345864e9ee85 55 UDPSocket server;
GeofferyOmlette 0:345864e9ee85 56 Endpoint nsp;
GeofferyOmlette 0:345864e9ee85 57
GeofferyOmlette 0:345864e9ee85 58 static void nsp_init()
GeofferyOmlette 0:345864e9ee85 59 {
GeofferyOmlette 0:345864e9ee85 60 server.init();
GeofferyOmlette 0:345864e9ee85 61 server.bind(NSP_PORT);
GeofferyOmlette 0:345864e9ee85 62
GeofferyOmlette 0:345864e9ee85 63 nsp.set_address(NSP_ADDRESS, NSP_PORT);
GeofferyOmlette 0:345864e9ee85 64
GeofferyOmlette 0:345864e9ee85 65 NSDL_DEBUG("name: %s", endpoint_name);
GeofferyOmlette 0:345864e9ee85 66 NSDL_DEBUG("NSP=%s - port %d\n", NSP_ADDRESS, NSP_PORT);
GeofferyOmlette 0:345864e9ee85 67 }
GeofferyOmlette 0:345864e9ee85 68
GeofferyOmlette 0:345864e9ee85 69 // ****************************************************************************
GeofferyOmlette 0:345864e9ee85 70 // Resource creation
GeofferyOmlette 0:345864e9ee85 71
GeofferyOmlette 0:345864e9ee85 72 static int create_resources()
GeofferyOmlette 0:345864e9ee85 73 {
GeofferyOmlette 0:345864e9ee85 74 sn_nsdl_resource_info_s *resource_ptr = NULL;
GeofferyOmlette 0:345864e9ee85 75 sn_nsdl_ep_parameters_s *endpoint_ptr = NULL;
GeofferyOmlette 0:345864e9ee85 76
GeofferyOmlette 0:345864e9ee85 77 NSDL_DEBUG("Creating resources");
GeofferyOmlette 0:345864e9ee85 78
GeofferyOmlette 0:345864e9ee85 79 /* Create resources */
GeofferyOmlette 0:345864e9ee85 80 resource_ptr = (sn_nsdl_resource_info_s*)nsdl_alloc(sizeof(sn_nsdl_resource_info_s));
GeofferyOmlette 0:345864e9ee85 81 if(!resource_ptr)
GeofferyOmlette 0:345864e9ee85 82 return 0;
GeofferyOmlette 0:345864e9ee85 83 memset(resource_ptr, 0, sizeof(sn_nsdl_resource_info_s));
GeofferyOmlette 0:345864e9ee85 84
GeofferyOmlette 0:345864e9ee85 85 resource_ptr->resource_parameters_ptr = (sn_nsdl_resource_parameters_s*)nsdl_alloc(sizeof(sn_nsdl_resource_parameters_s));
GeofferyOmlette 0:345864e9ee85 86 if(!resource_ptr->resource_parameters_ptr)
GeofferyOmlette 0:345864e9ee85 87 {
GeofferyOmlette 0:345864e9ee85 88 nsdl_free(resource_ptr);
GeofferyOmlette 0:345864e9ee85 89 return 0;
GeofferyOmlette 0:345864e9ee85 90 }
GeofferyOmlette 0:345864e9ee85 91 memset(resource_ptr->resource_parameters_ptr, 0, sizeof(sn_nsdl_resource_parameters_s));
GeofferyOmlette 0:345864e9ee85 92
bjblazkowicz 6:8729a0db0e25 93 //create_nespresso_resource(resource_ptr);
bjblazkowicz 6:8729a0db0e25 94 create_buffered_rgb_resource(resource_ptr);
GeofferyOmlette 0:345864e9ee85 95
GeofferyOmlette 2:88a30cc88a86 96 /* Register with NSP */
GeofferyOmlette 0:345864e9ee85 97 endpoint_ptr = nsdl_init_register_endpoint(endpoint_ptr, (uint8_t*)endpoint_name, ep_type, lifetime_ptr);
GeofferyOmlette 0:345864e9ee85 98 if(sn_nsdl_register_endpoint(endpoint_ptr) != 0)
GeofferyOmlette 0:345864e9ee85 99 pc.printf("NSP registering failed\r\n");
GeofferyOmlette 0:345864e9ee85 100 else
GeofferyOmlette 0:345864e9ee85 101 pc.printf("NSP registering OK\r\n");
GeofferyOmlette 0:345864e9ee85 102 nsdl_clean_register_endpoint(&endpoint_ptr);
GeofferyOmlette 0:345864e9ee85 103
GeofferyOmlette 0:345864e9ee85 104 nsdl_free(resource_ptr->resource_parameters_ptr);
GeofferyOmlette 0:345864e9ee85 105 nsdl_free(resource_ptr);
GeofferyOmlette 0:345864e9ee85 106 return 1;
GeofferyOmlette 0:345864e9ee85 107 }
GeofferyOmlette 0:345864e9ee85 108
GeofferyOmlette 0:345864e9ee85 109 // ****************************************************************************
GeofferyOmlette 0:345864e9ee85 110 // Program entry point
GeofferyOmlette 0:345864e9ee85 111
GeofferyOmlette 0:345864e9ee85 112 int main()
GeofferyOmlette 0:345864e9ee85 113 {
bjblazkowicz 6:8729a0db0e25 114 pc.baud(115200);
bjblazkowicz 6:8729a0db0e25 115
GeofferyOmlette 0:345864e9ee85 116 // Initialize Ethernet interface first
bjblazkowicz 4:ab3c8d25260e 117 pc.printf("Initializing ethernet... ");
GeofferyOmlette 0:345864e9ee85 118 ethernet_init();
bjblazkowicz 4:ab3c8d25260e 119 pc.printf("done.\r\n");
bjblazkowicz 4:ab3c8d25260e 120
GeofferyOmlette 0:345864e9ee85 121 // Initialize NSP node
bjblazkowicz 4:ab3c8d25260e 122 pc.printf("Initializing nsp node... ");
GeofferyOmlette 0:345864e9ee85 123 nsp_init();
bjblazkowicz 4:ab3c8d25260e 124 pc.printf("done.\r\n");
GeofferyOmlette 0:345864e9ee85 125
GeofferyOmlette 0:345864e9ee85 126 // Initialize NSDL stack
bjblazkowicz 4:ab3c8d25260e 127 pc.printf("Initializing NSDL stack... ");
GeofferyOmlette 0:345864e9ee85 128 nsdl_init();
bjblazkowicz 4:ab3c8d25260e 129 pc.printf("done.\r\n");
GeofferyOmlette 0:345864e9ee85 130
GeofferyOmlette 0:345864e9ee85 131 // Create NSDL resources
bjblazkowicz 4:ab3c8d25260e 132 pc.printf("Initializing resources... ");
GeofferyOmlette 0:345864e9ee85 133 create_resources();
bjblazkowicz 4:ab3c8d25260e 134 pc.printf("done.\r\n");
GeofferyOmlette 0:345864e9ee85 135
GeofferyOmlette 0:345864e9ee85 136 // Run the NSDL event loop (never returns)
GeofferyOmlette 0:345864e9ee85 137 nsdl_event_loop();
GeofferyOmlette 0:345864e9ee85 138 }