example make build

Dependencies:   DotStar

Fork of TCPSocket_Example by mbed_example

main.cpp

Committer:
nargetdev
Date:
2017-07-14
Revision:
4:7a0bcf58a8a3
Parent:
3:70182dad8745

File content as of revision 4:7a0bcf58a8a3:

#include "mbed.h"
#include "EthernetInterface.h"
//#include <UDPSocket.h>

#define LED_NUM 23
#define LED_GLOBAL 4 // brightness 0-31
#define LED_FREQ 500000 // spi

#define SPI_MOSI    PTC6
//#define SPI_MOSI    PTD2
#define SPI_MISO    PTC7
#define SPI_SCK     PTC5
//#define SPI_SCK     PTD1

 
SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK);
DigitalOut myled(LED1);
DigitalOut myled1(LED2);

int led_buf[LED_NUM];

void dotStar () {
    int i;

    // start frame
    for (i = 0; i < 4; i ++) {
        spi.write(0);
    }
    // led frame
    for (i = 0; i < LED_NUM; i ++) {
        spi.write((7<<5) | LED_GLOBAL);
        spi.write((led_buf[i] >> 16) & 0xff); // B
        spi.write((led_buf[i] >> 8) & 0xff); // G
        spi.write(led_buf[i] & 0xff); // R
    }
    // end frame
    for (i = 0; i < 4; i ++) {
        spi.write(1);
    }
}

// Network interface
EthernetInterface net;

void dot_red(){
    for (int i = 0; i < LED_NUM; i ++) {
//        int c = ((color + i) % 7) + 1;
        led_buf[i] = 0xff0000;
    }
    dotStar();
}
void dot_blue(){
    for (int i = 0; i < LED_NUM; i ++) {
//        int c = ((color + i) % 7) + 1;
        led_buf[i] = 0x00ff00;
    }
    dotStar();
}
void dot_green(){
    for (int i = 0; i < LED_NUM; i ++) {
//        int c = ((color + i) % 7) + 1;
        led_buf[i] = 0x0000ff;
    }
    dotStar();
}


// Socket demo
int main() {
    // Bring up the ethernet interface
    printf("Ethernet socket example\n");
    net.connect();
    
    // needed vars
    int i, c;
    int color = 1;
    myled1 = 0;
    myled = 1;
    spi.frequency(LED_FREQ);
    
    // first run of led color out: BLUE
    for (int i = 0; i < LED_NUM; i ++) {
        c = ((color + i) % 7) + 1;
        led_buf[i] = 0xffff00;
    }
    dotStar();
    myled = !myled;
    myled1 = !myled1;
    color ++;
    if (color > 7) color = 1;
    wait(0.2);
    
    // Show the network address
    const char *ip = net.get_ip_address();
    printf("IP address is: %s\n", ip ? ip : "No IP");

    // Open a socket on the network interface, and create a TCP connection to mbed.org
    UDPSocket socket;
    socket.open(&net);
//    socket.connect("10.200.1.20", 4242);

    // net params
    const char* host = "10.200.1.123";
    uint16_t port = 4242;
    
    
    // set up the endpoint
//    Endpoint controller;
//    controller.set_address("10.200.1.20", 4242);
    SocketAddress address(&net, host, port);

    // Send a simple http request
    char sbuffer[] = "GET / HTTP/1.1\r\nHost: www.arm.com\r\n\r\n";
//    int scount = socket.send(sbuffer, sizeof sbuffer);
    int scount = socket.sendto(host, port, sbuffer, sizeof sbuffer);
    printf("sent %d [%.*s]\n", scount, strstr(sbuffer, "\r\n")-sbuffer, sbuffer);

    // Recieve a simple http response and print out the response line
    char rbuffer[64];
//    int rcount = socket.recv(rbuffer, sizeof rbuffer);
    int rcount = socket.recvfrom(&address, rbuffer, sizeof rbuffer);
    printf("recv %d [%.*s]\n", rcount, strstr(rbuffer, "\r\n")-rbuffer, rbuffer);

    for (i = 0; i < LED_NUM; i ++) {
        c = ((color + i) % 7) + 1;
        led_buf[i] = 0x0000ff;
    }
    dotStar();
    myled = !myled;
    myled1 = !myled1;
    color ++;
    if (color > 7) color = 1;
    wait(0.2);
    
    // Ok hell yea.  Connection established, enter main loop serving artnet
    while(1) {
        // get a command
        char rbuffer[64];
        int rcount = socket.recvfrom(&address, rbuffer, sizeof rbuffer);
        
        // service it
        switch (rbuffer[0]) {
            case 'r':
                NVIC_SystemReset();
                break;
            case 'g':
                dot_green();
                break;
            case 'b':
                dot_blue();
                break;
        }
    }
    
    
    
    // Close the socket to return its memory and bring down the network interface
    socket.close();

    // Bring down the ethernet interface
    net.disconnect();
    printf("Done\n");
}