Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: C12832 EthernetInterface mbed-rtos mbed ConfigFile
main.cpp@1:8efef658d90b, 2015-03-05 (annotated)
- Committer:
- dwini
- Date:
- Thu Mar 05 13:18:28 2015 +0000
- Revision:
- 1:8efef658d90b
- Parent:
- 0:bef69e35f486
- Child:
- 2:a8eebf64cd3e
Create TCP Daemon and some logging (most of TRex code).
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dwini | 0:bef69e35f486 | 1 | #include "mbed.h" |
dwini | 0:bef69e35f486 | 2 | #include "EthernetInterface.h" |
dwini | 0:bef69e35f486 | 3 | #include "C12832.h" |
dwini | 1:8efef658d90b | 4 | #include "Log.h" |
dwini | 1:8efef658d90b | 5 | #include "TcpDaemon.h" |
dwini | 0:bef69e35f486 | 6 | |
dwini | 1:8efef658d90b | 7 | #define MAX_BACKLOG 1 |
dwini | 1:8efef658d90b | 8 | #define TCP_SERVER_PORT 6666 |
dwini | 1:8efef658d90b | 9 | |
dwini | 0:bef69e35f486 | 10 | #define LCD_LINE_HEIGHT 12 |
dwini | 0:bef69e35f486 | 11 | #define DELAY_INDICATION 0 |
dwini | 0:bef69e35f486 | 12 | |
dwini | 0:bef69e35f486 | 13 | #define STR_FAIL "FAIL" |
dwini | 0:bef69e35f486 | 14 | #define STR_OK "OK" |
dwini | 0:bef69e35f486 | 15 | #define STR_CLEAR "CLEAR" |
dwini | 0:bef69e35f486 | 16 | |
dwini | 0:bef69e35f486 | 17 | Serial pc(USBTX,USBRX); |
dwini | 1:8efef658d90b | 18 | DigitalOut error_led(LED1); |
dwini | 0:bef69e35f486 | 19 | C12832 lcd(p5, p7, p6, p8, p11); |
dwini | 0:bef69e35f486 | 20 | |
dwini | 0:bef69e35f486 | 21 | PwmOut rOut (p23); |
dwini | 0:bef69e35f486 | 22 | PwmOut gOut (p24); |
dwini | 0:bef69e35f486 | 23 | PwmOut bOut (p25); |
dwini | 0:bef69e35f486 | 24 | |
dwini | 1:8efef658d90b | 25 | using namespace MachineVision; |
dwini | 1:8efef658d90b | 26 | |
dwini | 0:bef69e35f486 | 27 | void setLcdServerInfo(char * ip) { |
dwini | 0:bef69e35f486 | 28 | lcd.cls(); |
dwini | 0:bef69e35f486 | 29 | lcd.locate(0,0); |
dwini | 1:8efef658d90b | 30 | lcd.printf("IP: %s", ip); |
dwini | 1:8efef658d90b | 31 | lcd.locate(0,14); |
dwini | 1:8efef658d90b | 32 | lcd.printf("Port: %d", TCP_SERVER_PORT); |
dwini | 0:bef69e35f486 | 33 | } |
dwini | 0:bef69e35f486 | 34 | |
dwini | 0:bef69e35f486 | 35 | void setRGB(int r, int g, int b) { |
dwini | 0:bef69e35f486 | 36 | rOut = r; |
dwini | 0:bef69e35f486 | 37 | gOut = g; |
dwini | 0:bef69e35f486 | 38 | bOut = b; |
dwini | 0:bef69e35f486 | 39 | } |
dwini | 0:bef69e35f486 | 40 | |
dwini | 0:bef69e35f486 | 41 | void clearRGB(void) { |
dwini | 0:bef69e35f486 | 42 | setRGB(255, 255, 255); |
dwini | 0:bef69e35f486 | 43 | } |
dwini | 0:bef69e35f486 | 44 | |
dwini | 0:bef69e35f486 | 45 | void initRgb(void) { |
dwini | 0:bef69e35f486 | 46 | rOut.period(0.001); // set pwm period |
dwini | 0:bef69e35f486 | 47 | gOut.period(0.001); // set pwm period |
dwini | 0:bef69e35f486 | 48 | bOut.period(0.001); // set pwm period |
dwini | 0:bef69e35f486 | 49 | |
dwini | 0:bef69e35f486 | 50 | setRGB(255, 255, 255); |
dwini | 0:bef69e35f486 | 51 | } |
dwini | 0:bef69e35f486 | 52 | |
dwini | 0:bef69e35f486 | 53 | void indicateOk(void) { |
dwini | 0:bef69e35f486 | 54 | setRGB(255, 0, 255); |
dwini | 0:bef69e35f486 | 55 | } |
dwini | 0:bef69e35f486 | 56 | |
dwini | 0:bef69e35f486 | 57 | void indicateFail(void) { |
dwini | 0:bef69e35f486 | 58 | setRGB(0, 255, 255); |
dwini | 0:bef69e35f486 | 59 | } |
dwini | 0:bef69e35f486 | 60 | |
dwini | 0:bef69e35f486 | 61 | int main (void) { |
dwini | 0:bef69e35f486 | 62 | // Init RGB led |
dwini | 0:bef69e35f486 | 63 | initRgb(); |
dwini | 0:bef69e35f486 | 64 | |
dwini | 0:bef69e35f486 | 65 | pc.baud(115200); |
dwini | 1:8efef658d90b | 66 | |
dwini | 0:bef69e35f486 | 67 | // Status check |
dwini | 0:bef69e35f486 | 68 | for (int i = 0; i < 4; i++) { |
dwini | 0:bef69e35f486 | 69 | indicateOk(); |
dwini | 0:bef69e35f486 | 70 | indicateFail(); |
dwini | 0:bef69e35f486 | 71 | } |
dwini | 0:bef69e35f486 | 72 | clearRGB(); |
dwini | 0:bef69e35f486 | 73 | |
dwini | 1:8efef658d90b | 74 | EthernetInterface eth; |
dwini | 1:8efef658d90b | 75 | Log::v("Requesting IP address from DHCP\r\n"); |
dwini | 1:8efef658d90b | 76 | eth.init(); //Use DHCP |
dwini | 1:8efef658d90b | 77 | |
dwini | 1:8efef658d90b | 78 | if (eth.connect() < 0) { |
dwini | 1:8efef658d90b | 79 | Log::w("Could not retrieve IP address from DHCP\r\n"); |
dwini | 1:8efef658d90b | 80 | setLcdServerInfo("No ip address"); |
dwini | 1:8efef658d90b | 81 | } else { |
dwini | 1:8efef658d90b | 82 | Log::v("IP Address is %s\r\n", eth.getIPAddress()); |
dwini | 0:bef69e35f486 | 83 | |
dwini | 1:8efef658d90b | 84 | // Set ip on LCD |
dwini | 0:bef69e35f486 | 85 | setLcdServerInfo(eth.getIPAddress()); |
dwini | 1:8efef658d90b | 86 | |
dwini | 1:8efef658d90b | 87 | // Start the daemon |
dwini | 1:8efef658d90b | 88 | TcpDaemon daemon(TCP_SERVER_PORT); |
dwini | 1:8efef658d90b | 89 | Log::v("TCP daemon listening @ TCP_SERVER_PORT = %d\r\n", TCP_SERVER_PORT); |
dwini | 1:8efef658d90b | 90 | daemon.startListening(); |
dwini | 1:8efef658d90b | 91 | } |
dwini | 1:8efef658d90b | 92 | |
dwini | 1:8efef658d90b | 93 | // Should never be reached |
dwini | 1:8efef658d90b | 94 | while (true) { |
dwini | 1:8efef658d90b | 95 | error_led = 1; |
dwini | 1:8efef658d90b | 96 | wait(0.25); |
dwini | 1:8efef658d90b | 97 | error_led = 0; |
dwini | 1:8efef658d90b | 98 | wait(0.25); |
dwini | 0:bef69e35f486 | 99 | } |
dwini | 0:bef69e35f486 | 100 | } |