Code written by Paul Rabbat, Angel Daruna, Jarel Hawkins, and Cordel Williams

Dependencies:   4DGL-uLCD-SE EthernetInterface HTTPClient NTPClient PinDetect SDFileSystem mbed-rpc mbed-rtos mbed wave_player

Fork of ECE4180_FinalProject by Angel Daruna

Formatter.cpp

Committer:
prabbat3
Date:
2014-12-07
Revision:
12:a99989062fee
Parent:
11:1c3bc07daabf

File content as of revision 12:a99989062fee:

#include "Formatter.h"
#include "mbed.h"
#include "RPCObjectManager.h"
#include "EthernetInterface.h"
#include "alarmContainer.h"
#include <string>

const char *SIMPLE_HTML_CODE = "\
<!DOCTYPE html>\
<html>\
<head>\
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\
<title>Your AC</title>\
</head>\
 <body>";


const char* INTERACTIVE_HTML_CODE_1 = "\
<!DOCTYPE html> \
<html>\
<head>\
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\
<title>Your Alarm Clock</title>\
<script type=\"text/javascript\">\
var ip = \"%s\";\
function submitCreateForm()\
{\
var url = \"http://\" + ip + \"/Alarm/\" + \"new?name=Alarm\";\
location.href= url;\
}\
function submitCallFuncForm()\
{\
var command = document.getElementById(\"command\").value;\
if(command === \"\") \
return; \
var tmp = command.split(\' \');\
var url = tmp[0];\
if(tmp.length > 1)\
url += \"?\";\
for(var i = 1; i < tmp.length; ++i)\
{\
url += \"arg\" + i + \"=\" + tmp[i];\
if(i+1 < tmp.length)\
url += \"&\";\
}\
location.href = url;\
}\
function submitAlarmPreferences()\
{\
var h = document.getElementById(\"hour\").value;\
var m = document.getElementById(\"minute\").value;\
var a = document.getElementById(\"ampm\").value;\
var url = \"/Alarm/updateAlarmPreference?arg1=\" + h + \"&arg2=\" + m + \"&arg2=\" + a;\
location.href = url;\
}\
function setAlarm()\
{\
var url = \"/Alarm/setAlarm\";\
location.href = url;\
}\
</script>\
</head> \
<body>";
    
const char* INTERACTIVE_HTML_CODE_2 = "</body> \
</html>";

static char chunk[4096];
        
Formatter::Formatter(int nb):
currentChunk(0),
nbChunk(nb)
{
}    

char* Formatter::get_page(char *reply)
{
    chunk[0] = '\0';

    if(currentChunk < nbChunk)
    {
        get_chunk(currentChunk, reply);
        currentChunk++;
    }
    else
        currentChunk = 0;
    
    return chunk;
}    

void Formatter::get_chunk(const int c, char *reply)
{
    strcat(chunk, reply);
}

SimpleHTMLFormatter::SimpleHTMLFormatter():
Formatter()
{
}

void SimpleHTMLFormatter::get_chunk(const int c, char* reply)
{
    strcat(chunk, SIMPLE_HTML_CODE);
        
    if(!RPCObjectManager::instance().is_empty())
    {
        strcat(chunk, "<ul>");
        for(std::list<char*>::iterator itor = RPCObjectManager::instance().begin();
            itor != RPCObjectManager::instance().end();
            ++itor)
        {
            strcat(chunk, "<li>");
            strcat(chunk, *itor);
            strcat(chunk, "</li>");
        }
        strcat(chunk, "</ul>");
    }
    
    strcat(chunk, "</body></html>");
}

InteractiveHTMLFormatter::InteractiveHTMLFormatter():
Formatter(3)
{
}

void InteractiveHTMLFormatter::get_chunk(const int c, char *reply)
{
    int alarmCreated = 0;
    
    if(c == 0)
        sprintf(chunk, INTERACTIVE_HTML_CODE_1, EthernetInterface::getIPAddress());

    else if(c == 1){
        if(!RPCObjectManager::instance().is_empty()){
            alarmCreated = 1;
        }
        strcat(chunk, " ");
        
        if(!alarmCreated){
            strcat(chunk, "<p><input type=\"button\" value=\"Create Alarm\" onclick=\"javascript:submitCreateForm();\"></p>");
        }else{
            strcat(chunk, "<h3>Set Your Alarm:</h3>");
            strcat(chunk, "<form>");
            
            /******* HOUR *******/
            strcat(chunk, "<select id=\"hour\">");
            strcat(chunk, "<option ");
            if(_alarm.hours == 1){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"1\">1</option>");
            strcat(chunk, "<option ");
            if(_alarm.hours == 2){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"2\">2</option>");
            strcat(chunk, "<option ");
            if(_alarm.hours == 3){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"3\">3</option>");
            strcat(chunk, "<option ");
            if(_alarm.hours == 4){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"4\">4</option>");
            strcat(chunk, "<option ");
            if(_alarm.hours == 5){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"5\">5</option>");
            strcat(chunk, "<option ");
            if(_alarm.hours == 6){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"6\">6</option>");
            strcat(chunk, "<option ");
            if(_alarm.hours == 7){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"7\">7</option>");
            strcat(chunk, "<option ");
            if(_alarm.hours == 8){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"8\">8</option>");
            strcat(chunk, "<option ");
            if(_alarm.hours == 9){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"9\">9</option>");
            strcat(chunk, "<option ");
            if(_alarm.hours == 10){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"10\">10</option>");
            strcat(chunk, "<option ");
            if(_alarm.hours == 11){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"11\">11</option>");
            strcat(chunk, "<option ");
            if(_alarm.hours == 12 || _alarm.hours == 0){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"12\">12</option>");
            strcat(chunk, "</select>");
            
            strcat(chunk, ":");
            
            /******* MINUTE *******/  
            strcat(chunk, "<select id=\"minute\">");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 0){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"0\">00</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 1){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"1\">01</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 2){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"2\">02</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 3){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"3\">03</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 4){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"4\">04</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 5){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"5\">05</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 6){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"6\">06</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 7){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"7\">07</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 8){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"8\">08</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 9){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"9\">09</option>");
            
            strcat(chunk, "<option ");
            if(_alarm.minutes == 10){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"10\">10</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 11){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"11\">11</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 12){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"12\">12</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 13){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"13\">13</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 14){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"14\">14</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 15){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"15\">15</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 16){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"16\">16</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 17){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"17\">17</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 18){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"18\">18</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 19){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"19\">19</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 20){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"20\">20</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 21){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"21\">21</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 22){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"22\">22</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 23){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"23\">23</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 24){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"24\">24</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 25){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"25\">25</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 26){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"26\">26</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 27){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"27\">27</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 28){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"28\">28</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 29){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"29\">29</option>");
            
            strcat(chunk, "<option ");
            if(_alarm.minutes == 30){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"30\">30</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 31){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"31\">31</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 32){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"32\">32</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 33){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"33\">33</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 34){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"34\">34</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 35){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"35\">35</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 36){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"36\">36</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 37){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"37\">37</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 38){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"38\">38</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 39){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"39\">39</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 40){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"40\">40</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 41){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"41\">41</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 42){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"42\">42</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 43){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"43\">43</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 44){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"44\">44</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 45){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"45\">45</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 46){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"46\">46</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 47){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"47\">47</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 48){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"48\">48</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 49){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"49\">49</option>");
            strcat(chunk, "<option ");
             if(_alarm.minutes == 50){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"50\">50</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 51){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"51\">51</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 52){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"52\">52</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 53){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"53\">53</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 54){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"54\">54</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 55){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"55\">55</option>");
             strcat(chunk, "<option ");
            if(_alarm.minutes == 56){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"56\">56</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 57){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"57\">57</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 58){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"58\">58</option>");
            strcat(chunk, "<option ");
            if(_alarm.minutes == 59){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"59\">59</option>");
            
            strcat(chunk, "</select>");
            
            /******* AM PM *******/
            strcat(chunk, "<select id=\"ampm\">");
            strcat(chunk, "<option ");
            if(strcmp(_alarm.amPm,"AM") == 0){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"0\">AM</option>");
            strcat(chunk, "<option ");
            if(strcmp(_alarm.amPm,"PM") == 0){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"1\">PM</option>");
            strcat(chunk, "</select>");
            strcat(chunk, "<br><p>");
            strcat(chunk, "<input type=\"button\" value=\"Save\" onclick=\"javascript:submitAlarmPreferences();\">");
            strcat(chunk, "<input type=\"button\" value=\"Set\" onclick=\"javascript:setAlarm();\">");
            strcat(chunk, "</p><br></form>");
        }
    }
    else if(c == 2)
        strcat(chunk, INTERACTIVE_HTML_CODE_2);
}