example make build

Dependencies:   DotStar

Fork of TCPSocket_Example by mbed_example

Committer:
nargetdev
Date:
Fri Jul 14 16:06:58 2017 +0000
Revision:
2:028e56dcc064
Parent:
1:965d7fb768b6
Child:
3:70182dad8745
functioning red-green server

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