example make build

Dependencies:   DotStar

Fork of TCPSocket_Example by mbed_example

Committer:
nargetdev
Date:
Fri Jul 14 19:04:43 2017 +0000
Revision:
4:7a0bcf58a8a3
Parent:
3:70182dad8745
gcc make recompiles everything;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mab5449 0:6b383744246e 1 #include "mbed.h"
mab5449 0:6b383744246e 2 #include "EthernetInterface.h"
nargetdev 4:7a0bcf58a8a3 3 //#include <UDPSocket.h>
mab5449 0:6b383744246e 4
nargetdev 2:028e56dcc064 5 #define LED_NUM 23
nargetdev 2:028e56dcc064 6 #define LED_GLOBAL 4 // brightness 0-31
nargetdev 2:028e56dcc064 7 #define LED_FREQ 500000 // spi
nargetdev 2:028e56dcc064 8
nargetdev 2:028e56dcc064 9 #define SPI_MOSI PTC6
nargetdev 2:028e56dcc064 10 //#define SPI_MOSI PTD2
nargetdev 2:028e56dcc064 11 #define SPI_MISO PTC7
nargetdev 2:028e56dcc064 12 #define SPI_SCK PTC5
nargetdev 2:028e56dcc064 13 //#define SPI_SCK PTD1
nargetdev 2:028e56dcc064 14
nargetdev 2:028e56dcc064 15
nargetdev 2:028e56dcc064 16 SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK);
nargetdev 2:028e56dcc064 17 DigitalOut myled(LED1);
nargetdev 2:028e56dcc064 18 DigitalOut myled1(LED2);
nargetdev 2:028e56dcc064 19
nargetdev 2:028e56dcc064 20 int led_buf[LED_NUM];
nargetdev 2:028e56dcc064 21
nargetdev 2:028e56dcc064 22 void dotStar () {
nargetdev 2:028e56dcc064 23 int i;
nargetdev 2:028e56dcc064 24
nargetdev 2:028e56dcc064 25 // start frame
nargetdev 2:028e56dcc064 26 for (i = 0; i < 4; i ++) {
nargetdev 2:028e56dcc064 27 spi.write(0);
nargetdev 2:028e56dcc064 28 }
nargetdev 2:028e56dcc064 29 // led frame
nargetdev 2:028e56dcc064 30 for (i = 0; i < LED_NUM; i ++) {
nargetdev 2:028e56dcc064 31 spi.write((7<<5) | LED_GLOBAL);
nargetdev 2:028e56dcc064 32 spi.write((led_buf[i] >> 16) & 0xff); // B
nargetdev 2:028e56dcc064 33 spi.write((led_buf[i] >> 8) & 0xff); // G
nargetdev 2:028e56dcc064 34 spi.write(led_buf[i] & 0xff); // R
nargetdev 2:028e56dcc064 35 }
nargetdev 2:028e56dcc064 36 // end frame
nargetdev 2:028e56dcc064 37 for (i = 0; i < 4; i ++) {
nargetdev 2:028e56dcc064 38 spi.write(1);
nargetdev 2:028e56dcc064 39 }
nargetdev 2:028e56dcc064 40 }
nargetdev 2:028e56dcc064 41
mab5449 0:6b383744246e 42 // Network interface
mab5449 0:6b383744246e 43 EthernetInterface net;
mab5449 0:6b383744246e 44
nargetdev 2:028e56dcc064 45 void dot_red(){
nargetdev 2:028e56dcc064 46 for (int i = 0; i < LED_NUM; i ++) {
nargetdev 2:028e56dcc064 47 // int c = ((color + i) % 7) + 1;
nargetdev 2:028e56dcc064 48 led_buf[i] = 0xff0000;
nargetdev 2:028e56dcc064 49 }
nargetdev 2:028e56dcc064 50 dotStar();
nargetdev 2:028e56dcc064 51 }
nargetdev 2:028e56dcc064 52 void dot_blue(){
nargetdev 2:028e56dcc064 53 for (int i = 0; i < LED_NUM; i ++) {
nargetdev 2:028e56dcc064 54 // int c = ((color + i) % 7) + 1;
nargetdev 2:028e56dcc064 55 led_buf[i] = 0x00ff00;
nargetdev 2:028e56dcc064 56 }
nargetdev 2:028e56dcc064 57 dotStar();
nargetdev 2:028e56dcc064 58 }
nargetdev 2:028e56dcc064 59 void dot_green(){
nargetdev 2:028e56dcc064 60 for (int i = 0; i < LED_NUM; i ++) {
nargetdev 2:028e56dcc064 61 // int c = ((color + i) % 7) + 1;
nargetdev 2:028e56dcc064 62 led_buf[i] = 0x0000ff;
nargetdev 2:028e56dcc064 63 }
nargetdev 2:028e56dcc064 64 dotStar();
nargetdev 2:028e56dcc064 65 }
nargetdev 2:028e56dcc064 66
nargetdev 2:028e56dcc064 67
mab5449 0:6b383744246e 68 // Socket demo
mab5449 0:6b383744246e 69 int main() {
mab5449 0:6b383744246e 70 // Bring up the ethernet interface
mab5449 0:6b383744246e 71 printf("Ethernet socket example\n");
mab5449 0:6b383744246e 72 net.connect();
nargetdev 2:028e56dcc064 73
nargetdev 2:028e56dcc064 74 // needed vars
nargetdev 2:028e56dcc064 75 int i, c;
nargetdev 2:028e56dcc064 76 int color = 1;
nargetdev 2:028e56dcc064 77 myled1 = 0;
nargetdev 2:028e56dcc064 78 myled = 1;
nargetdev 2:028e56dcc064 79 spi.frequency(LED_FREQ);
nargetdev 2:028e56dcc064 80
nargetdev 2:028e56dcc064 81 // first run of led color out: BLUE
nargetdev 2:028e56dcc064 82 for (int i = 0; i < LED_NUM; i ++) {
nargetdev 2:028e56dcc064 83 c = ((color + i) % 7) + 1;
nargetdev 2:028e56dcc064 84 led_buf[i] = 0xffff00;
nargetdev 2:028e56dcc064 85 }
nargetdev 2:028e56dcc064 86 dotStar();
nargetdev 2:028e56dcc064 87 myled = !myled;
nargetdev 2:028e56dcc064 88 myled1 = !myled1;
nargetdev 2:028e56dcc064 89 color ++;
nargetdev 2:028e56dcc064 90 if (color > 7) color = 1;
nargetdev 2:028e56dcc064 91 wait(0.2);
nargetdev 2:028e56dcc064 92
mab5449 0:6b383744246e 93 // Show the network address
mab5449 0:6b383744246e 94 const char *ip = net.get_ip_address();
mab5449 0:6b383744246e 95 printf("IP address is: %s\n", ip ? ip : "No IP");
mab5449 0:6b383744246e 96
mab5449 0:6b383744246e 97 // Open a socket on the network interface, and create a TCP connection to mbed.org
nargetdev 2:028e56dcc064 98 UDPSocket socket;
mab5449 0:6b383744246e 99 socket.open(&net);
nargetdev 3:70182dad8745 100 // socket.connect("10.200.1.20", 4242);
nargetdev 3:70182dad8745 101
nargetdev 3:70182dad8745 102 // net params
nargetdev 4:7a0bcf58a8a3 103 const char* host = "10.200.1.123";
nargetdev 3:70182dad8745 104 uint16_t port = 4242;
nargetdev 3:70182dad8745 105
nargetdev 3:70182dad8745 106
nargetdev 3:70182dad8745 107 // set up the endpoint
nargetdev 3:70182dad8745 108 // Endpoint controller;
nargetdev 3:70182dad8745 109 // controller.set_address("10.200.1.20", 4242);
nargetdev 3:70182dad8745 110 SocketAddress address(&net, host, port);
mab5449 0:6b383744246e 111
mab5449 0:6b383744246e 112 // Send a simple http request
sarahmarshy 1:965d7fb768b6 113 char sbuffer[] = "GET / HTTP/1.1\r\nHost: www.arm.com\r\n\r\n";
nargetdev 3:70182dad8745 114 // int scount = socket.send(sbuffer, sizeof sbuffer);
nargetdev 4:7a0bcf58a8a3 115 int scount = socket.sendto(host, port, sbuffer, sizeof sbuffer);
mab5449 0:6b383744246e 116 printf("sent %d [%.*s]\n", scount, strstr(sbuffer, "\r\n")-sbuffer, sbuffer);
mab5449 0:6b383744246e 117
mab5449 0:6b383744246e 118 // Recieve a simple http response and print out the response line
mab5449 0:6b383744246e 119 char rbuffer[64];
nargetdev 3:70182dad8745 120 // int rcount = socket.recv(rbuffer, sizeof rbuffer);
nargetdev 3:70182dad8745 121 int rcount = socket.recvfrom(&address, rbuffer, sizeof rbuffer);
mab5449 0:6b383744246e 122 printf("recv %d [%.*s]\n", rcount, strstr(rbuffer, "\r\n")-rbuffer, rbuffer);
mab5449 0:6b383744246e 123
nargetdev 2:028e56dcc064 124 for (i = 0; i < LED_NUM; i ++) {
nargetdev 2:028e56dcc064 125 c = ((color + i) % 7) + 1;
nargetdev 2:028e56dcc064 126 led_buf[i] = 0x0000ff;
nargetdev 2:028e56dcc064 127 }
nargetdev 2:028e56dcc064 128 dotStar();
nargetdev 2:028e56dcc064 129 myled = !myled;
nargetdev 2:028e56dcc064 130 myled1 = !myled1;
nargetdev 2:028e56dcc064 131 color ++;
nargetdev 2:028e56dcc064 132 if (color > 7) color = 1;
nargetdev 2:028e56dcc064 133 wait(0.2);
nargetdev 2:028e56dcc064 134
nargetdev 2:028e56dcc064 135 // Ok hell yea. Connection established, enter main loop serving artnet
nargetdev 2:028e56dcc064 136 while(1) {
nargetdev 2:028e56dcc064 137 // get a command
nargetdev 2:028e56dcc064 138 char rbuffer[64];
nargetdev 3:70182dad8745 139 int rcount = socket.recvfrom(&address, rbuffer, sizeof rbuffer);
nargetdev 2:028e56dcc064 140
nargetdev 2:028e56dcc064 141 // service it
nargetdev 2:028e56dcc064 142 switch (rbuffer[0]) {
nargetdev 2:028e56dcc064 143 case 'r':
nargetdev 2:028e56dcc064 144 NVIC_SystemReset();
nargetdev 2:028e56dcc064 145 break;
nargetdev 2:028e56dcc064 146 case 'g':
nargetdev 2:028e56dcc064 147 dot_green();
nargetdev 2:028e56dcc064 148 break;
nargetdev 2:028e56dcc064 149 case 'b':
nargetdev 2:028e56dcc064 150 dot_blue();
nargetdev 2:028e56dcc064 151 break;
nargetdev 2:028e56dcc064 152 }
nargetdev 2:028e56dcc064 153 }
nargetdev 4:7a0bcf58a8a3 154
nargetdev 4:7a0bcf58a8a3 155
nargetdev 4:7a0bcf58a8a3 156
mab5449 0:6b383744246e 157 // Close the socket to return its memory and bring down the network interface
mab5449 0:6b383744246e 158 socket.close();
mab5449 0:6b383744246e 159
mab5449 0:6b383744246e 160 // Bring down the ethernet interface
mab5449 0:6b383744246e 161 net.disconnect();
mab5449 0:6b383744246e 162 printf("Done\n");
mab5449 0:6b383744246e 163 }