demo project

Dependencies:   AX-12A Dynamixel mbed iothub_client EthernetInterface NTPClient ConfigFile SDFileSystem iothub_amqp_transport mbed-rtos proton-c-mbed wolfSSL

Committer:
henryrawas
Date:
Tue Dec 29 23:31:28 2015 +0000
Revision:
7:6723f6887d00
Parent:
5:36916b1c5a06
Child:
8:d98e2dec0f40
motion block alerts, more commands

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jepickett 0:547ac906c46b 1 #include "mbed.h"
henryrawas 4:36a4eceb1b7f 2 #include "rtos.h"
henryrawas 4:36a4eceb1b7f 3
henryrawas 4:36a4eceb1b7f 4 #include "EthernetInterface.h"
henryrawas 4:36a4eceb1b7f 5 #include "mbed/logging.h"
henryrawas 4:36a4eceb1b7f 6 #include "mbed/mbedtime.h"
henryrawas 4:36a4eceb1b7f 7 #include <NTPClient.h>
jepickett 2:37021fb3b45b 8 #include <Terminal.h>
henryrawas 7:6723f6887d00 9
henryrawas 4:36a4eceb1b7f 10
jepickett 2:37021fb3b45b 11 using namespace std;
jepickett 0:547ac906c46b 12
jepickett 2:37021fb3b45b 13 DigitalOut myled(LED_GREEN);
jepickett 2:37021fb3b45b 14 Terminal pc(USBTX, USBRX);
henryrawas 4:36a4eceb1b7f 15
henryrawas 4:36a4eceb1b7f 16
henryrawas 7:6723f6887d00 17 extern void RunController();
henryrawas 7:6723f6887d00 18 extern bool StartIothubThread();
henryrawas 4:36a4eceb1b7f 19
henryrawas 4:36a4eceb1b7f 20 int setupRealTime(void)
henryrawas 4:36a4eceb1b7f 21 {
henryrawas 4:36a4eceb1b7f 22 int result;
henryrawas 4:36a4eceb1b7f 23
henryrawas 4:36a4eceb1b7f 24 (void)printf("setupRealTime begin\r\n");
henryrawas 4:36a4eceb1b7f 25 if (EthernetInterface::connect())
henryrawas 4:36a4eceb1b7f 26 {
henryrawas 4:36a4eceb1b7f 27 (void)printf("Error initializing EthernetInterface.\r\n");
henryrawas 4:36a4eceb1b7f 28 result = __LINE__;
henryrawas 4:36a4eceb1b7f 29 }
henryrawas 4:36a4eceb1b7f 30 else
henryrawas 4:36a4eceb1b7f 31 {
henryrawas 4:36a4eceb1b7f 32 (void)printf("setupRealTime NTP begin\r\n");
henryrawas 4:36a4eceb1b7f 33 NTPClient ntp;
henryrawas 4:36a4eceb1b7f 34 if (ntp.setTime("0.pool.ntp.org") != 0)
henryrawas 4:36a4eceb1b7f 35 {
henryrawas 4:36a4eceb1b7f 36 (void)printf("Failed setting time.\r\n");
henryrawas 4:36a4eceb1b7f 37 result = __LINE__;
henryrawas 4:36a4eceb1b7f 38 }
henryrawas 4:36a4eceb1b7f 39 else
henryrawas 4:36a4eceb1b7f 40 {
henryrawas 4:36a4eceb1b7f 41 (void)printf("set time correctly!\r\n");
henryrawas 4:36a4eceb1b7f 42 result = 0;
henryrawas 4:36a4eceb1b7f 43 }
henryrawas 4:36a4eceb1b7f 44 (void)printf("setupRealTime NTP end\r\n");
henryrawas 4:36a4eceb1b7f 45 EthernetInterface::disconnect();
henryrawas 4:36a4eceb1b7f 46 }
henryrawas 4:36a4eceb1b7f 47 (void)printf("setupRealTime end\r\n");
henryrawas 4:36a4eceb1b7f 48
henryrawas 4:36a4eceb1b7f 49 return result;
henryrawas 4:36a4eceb1b7f 50 }
henryrawas 4:36a4eceb1b7f 51
henryrawas 4:36a4eceb1b7f 52 int InitEthernet()
henryrawas 4:36a4eceb1b7f 53 {
henryrawas 4:36a4eceb1b7f 54 (void)printf("Initializing mbed specific things...\r\n");
henryrawas 4:36a4eceb1b7f 55
henryrawas 4:36a4eceb1b7f 56 /* These are needed in order to initialize the time provider for Proton-C */
henryrawas 4:36a4eceb1b7f 57 mbed_log_init();
henryrawas 4:36a4eceb1b7f 58 mbedtime_init();
henryrawas 4:36a4eceb1b7f 59
henryrawas 4:36a4eceb1b7f 60 if (EthernetInterface::init())
henryrawas 4:36a4eceb1b7f 61 {
henryrawas 4:36a4eceb1b7f 62 (void)printf("Error initializing EthernetInterface.\r\n");
henryrawas 4:36a4eceb1b7f 63 return -1;
henryrawas 4:36a4eceb1b7f 64 }
henryrawas 4:36a4eceb1b7f 65
henryrawas 4:36a4eceb1b7f 66 if (setupRealTime() != 0)
henryrawas 4:36a4eceb1b7f 67 {
henryrawas 4:36a4eceb1b7f 68 (void)printf("Failed setting up real time clock\r\n");
henryrawas 4:36a4eceb1b7f 69 return -1;
henryrawas 4:36a4eceb1b7f 70 }
henryrawas 4:36a4eceb1b7f 71
henryrawas 4:36a4eceb1b7f 72 if (EthernetInterface::connect())
henryrawas 4:36a4eceb1b7f 73 {
henryrawas 4:36a4eceb1b7f 74 (void)printf("Error connecting EthernetInterface.\r\n");
henryrawas 4:36a4eceb1b7f 75 return -1;
henryrawas 4:36a4eceb1b7f 76 }
henryrawas 4:36a4eceb1b7f 77
henryrawas 4:36a4eceb1b7f 78 return 0;
henryrawas 4:36a4eceb1b7f 79 }
henryrawas 4:36a4eceb1b7f 80
henryrawas 4:36a4eceb1b7f 81
jepickett 0:547ac906c46b 82
jepickett 0:547ac906c46b 83 int main()
jepickett 0:547ac906c46b 84 {
jepickett 2:37021fb3b45b 85 pc.baud(115200);
jepickett 2:37021fb3b45b 86
jepickett 2:37021fb3b45b 87 pc.cls();
jepickett 2:37021fb3b45b 88 pc.foreground(Yellow);
jepickett 2:37021fb3b45b 89 pc.background(Black);
jepickett 2:37021fb3b45b 90
jepickett 2:37021fb3b45b 91 pc.locate( 0, 0 );
jepickett 2:37021fb3b45b 92 pc.printf("**********************\r\n");
jepickett 2:37021fb3b45b 93 pc.printf("RobotArmDemo start\r\n");
jepickett 2:37021fb3b45b 94 pc.printf("**********************\r\n");
jepickett 2:37021fb3b45b 95
jepickett 2:37021fb3b45b 96 pc.foreground(Teal);
jepickett 2:37021fb3b45b 97 pc.background(Black);
jepickett 2:37021fb3b45b 98
henryrawas 4:36a4eceb1b7f 99 InitEthernet();
henryrawas 4:36a4eceb1b7f 100
henryrawas 4:36a4eceb1b7f 101 // start IotHub connection
henryrawas 4:36a4eceb1b7f 102 StartIothubThread();
jepickett 2:37021fb3b45b 103
henryrawas 4:36a4eceb1b7f 104 // time delay is to allow the position encoders to come online after initial power supply event ~ 5 secs
henryrawas 4:36a4eceb1b7f 105 // and to allow IoTHub SSL connection established
henryrawas 4:36a4eceb1b7f 106 // TODO: test for connection established
henryrawas 4:36a4eceb1b7f 107 Thread::wait(15000);
henryrawas 4:36a4eceb1b7f 108
henryrawas 4:36a4eceb1b7f 109 pc.printf( "Initialization done. Ready to run. \r\n");
jepickett 2:37021fb3b45b 110
henryrawas 7:6723f6887d00 111
henryrawas 7:6723f6887d00 112 RunController();
jepickett 2:37021fb3b45b 113
henryrawas 4:36a4eceb1b7f 114 }