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:
bridadan
Date:
Fri Mar 20 16:11:15 2015 +0000
Revision:
12:ad05fe84b4ff
Parent:
8:27e94f52810b
Working on Arch Pro

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