Bender Robotics / Mbed 2 deprecated PLAUCI_full

Dependencies:   FatFileSystemCpp mbed PowerControl USBHostLite

wifi.cpp

Committer:
jkaderka
Date:
2015-04-19
Revision:
4:030c7726c7dc
Child:
6:c16e8b17092a

File content as of revision 4:030c7726c7dc:

#include "wifi.h"
#include "utils.h"

#define BAUDR 921600
#define BUFFER_SIZE 32

Wifi::Wifi (PinName tx, PinName rx, PinName reset, PinName status,
        const char * ssid, const char * phrase) : 
        wifi_(tx, rx, reset, status, ssid, phrase, WPA) {    
    //wifi_.baudr(9600); //default baudrate, will be changed asap
    wifi_.init(); // use DHCP
    while (!wifi_.connect()); // join the network
    printf("IP Address is %s\n\r", wifi_.getIPAddress());
    wifi_.setProtocol(TCP);
    wifi_.baudr(BAUDR);
}

/*
* Format: (int) -1 (int) -1 (int) swimmer_id
*   many times  (int) count 3*(int) acc 3*(float)gyro
*         (int) -1 (int) -1        
*/
int Wifi::sendFile(const char *fname, int i)
{
    char buffer[BUFFER_SIZE];
    int temp;
    int bytes;

    FILE *f = fopen(fname, "rb");
    if (f == NULL)
        return -1;  
    
    //send swimmer id
    temp = -1;
    toBytes(buffer, &temp, sizeof(int));
    toBytes(buffer+sizeof(int), &temp, sizeof(int));
    temp = i;
    toBytes(buffer+sizeof(int)*2, &temp, sizeof(int));
    bufferSend(buffer, 3*sizeof(int));
    
    while ((bytes = fread(buffer, 1, BUFFER_SIZE, f)) != 0)
        bufferSend(buffer, bytes);

    //end of transmission
    temp = -1;
    toBytes(buffer, &temp, sizeof(int));
    toBytes(buffer+sizeof(int), &temp, sizeof(int));
    bufferSend(buffer, 2*sizeof(int));

    fclose(f); 
    return 0;
}

/*
 * Returns 0 if no command was recieved
 * or the command
 */
char Wifi::getCmd(void)
{
    while (!wifi_.readable() || wifi_.getc() != '#')    
        ;
        
    return wifi_.getc();
}

/* ********************************
 * private
 * *******************************/
void Wifi::bufferSend(char *buffer, size_t size)
{
    int i;
    for (i = 0; i < size; i++)
        wifi_.putc(buffer[i]);
}