Renesas GR-Peach LCD Interface

Dependencies:   EthernetInterface HTTPD PubNub SDFileSystem mbed-rtos mbed picojson

Renesas GR-Peach LCD Interface

main.cpp

Committer:
nikhilchaturtvedi
Date:
2015-10-23
Revision:
0:0b32d3eaabfe

File content as of revision 0:0b32d3eaabfe:

#include "mbed.h"
#include "EthernetInterface.h"
#include "gen_helper.h"
#include "FATFileSystem.h"
#include "ff.h"
#include "SDFileSystem.h"


#define INCREASE_PWM_VALUE                 0
#define DECREASE_PWM_VALUE                 1
#define DRAW_ON_SCREEN                     2
#define FADE_SCREEN_AND_TURN_OFF           3
#define INCREASE_SCREEN_BRIGHTNESS_TO_FULL 4
#define SET_UP_SCREEN                      5

/* Init connections */
void init();
void read_temperature();

Serial main_console(USBTX, USBRX);
SDFileSystem sd(P8_5, P8_6, P8_3, P8_4, "sd"); // SD card interface through SPI
SPI temp_sense(P4_6, P4_7, P4_4);
DigitalOut cs(P4_5);

EthernetInterface ethInf;
TCPSocketServer server;
TCPSocketConnection* sock_connection;
gen_helper *helper; // Helper instance

int main() 
{
    main_console.printf("START\n");
    helper = new gen_helper(P10_14, P10_15, P10_12, P10_13, P3_15, P3_14, USBTX, USBRX, P4_6);
    helper->init_console();
    helper->lcd_init();
    
    main_console.printf("Starting connecting in V2 \n");
    
    /* Init Eth on a static IP and gateway */
    ethInf.init(HOST_IP_ADDR, HOST_SUBNET, HOST_GATEWAY);
    main_console.printf("Init eth\n");
    
    ethInf.connect();
    main_console.printf("Connected eth\n");
    
    /* Init the TCP server after init Ethernet */
    init();
    
    return 0; //should never come here
}

/* Start the eth interface and listen for incoming connections */
void init()
{
    /* Bind this server to a specific port */
    main_console.printf("Binding\n");
    int bind_status = server.bind(HOST_PORT);
    main_console.printf("Bound on port %d with status %d\n", HOST_PORT, bind_status);
    
    /* Listen on the port for incoming connections */
    int listen_status = server.listen();
    main_console.printf("Listen status %d\n", listen_status);
    
    /* Accept incoming connections */
    sock_connection = new TCPSocketConnection();
    int conn_accept_status = server.accept(*sock_connection);
    main_console.printf("Connection accept status %d\n",conn_accept_status);
    
    char meta_data[1] = {'\0'}; // holds the command from the client
    
    while(1) 
    {
        sock_connection->receive(meta_data, sizeof(meta_data));

        switch((int)(meta_data[0] % 48)) {
            
            case INCREASE_PWM_VALUE:
                main_console.printf("Increasing screen brightness\n");
                helper->pwm = helper->pwm + 0.1;
                break;

            case DECREASE_PWM_VALUE:
                main_console.printf("Decreasing screen brightness\n");
                helper->pwm = helper->pwm - 0.1;
                break;

            case DRAW_ON_SCREEN:
                //Divide the screen in two sections and fill them with different colours
                /*helper->fill_rect(0, 0, 128, 120, BROWN);
                helper->fill_rect(0, 120, 128, 160, SKYBLUE);*/
                
                //Draw the pattern
                //helper->draw_pattern_helper();
                break;

            case FADE_SCREEN_AND_TURN_OFF:
                main_console.printf("Fading screen\n");
                
                for(float i = 0.0f; i < 1.0f; i+=0.1f)
                {
                    main_console.printf("i %f\n", i);
                    if(helper->pwm > 0.0f)
                    {
                        helper->pwm = helper->pwm - i;
                        wait(0.3);
                    }
                }
                
                break;

            case INCREASE_SCREEN_BRIGHTNESS_TO_FULL:
                
                main_console.printf("Increasing screen brightness to full\n");
                
                float cur_bright = helper->pwm;
                
                for(float i = 0.0f; i < (1.0f - cur_bright); i+=0.1f) 
                {
                    helper->pwm = helper->pwm + i;
                    wait(0.3);
                }
                
                break;

            case SET_UP_SCREEN:
                //helper->fill_rect(0, 0, 128, 160, WHITE); //Just fill the whole screen with a colour, in this case white.
                break;

            default:
                main_console.printf("Junk\n");
                break;
        }
    }
}


/* Testing the temp sensor in a continuous loop */
void read_temperature()
{
    temp_sense.format(8, 3); //set SPI to 8-bit data rate
    while(1) 
    {
        cs = 1;
        temp_sense.write(0x01);
        int temp = temp_sense.write(0x02);
        cs = 0;
        main_console.printf("Temp %d\n", temp);
        wait(0.5);
    }

}