Everything works except AMPM and snooze

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

Fork of ECE4180_FinalProject by Paul Rabbat

Formatter.cpp

Committer:
prabbat3
Date:
2014-11-15
Revision:
0:0a99e3fc2a46
Child:
1:d7f65be2640d

File content as of revision 0:0a99e3fc2a46:

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

/* itoa:  convert n to characters in s */
void itoa( unsigned long long int value, char *str)
{   
   int i,j;
   char temp[30];
   for(i=0; value > 0; i++){    
       str[i] = value%10+'0';
       value=value/10;
    }
    for(j=0;i>=0;j++,i--){
        temp[j]=str[i-1];
    }
    for(i=0;i<j;i++){
        str[i]=temp[i];
    }   
}

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[1024];
        
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(reply != NULL && strlen(reply) != 0)
    {
        strcat(chunk, "RPC reply : ");
        strcat(chunk, reply);
    }
        
    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(reply != NULL && strlen(reply) != 0)
        {
            strcat(chunk, "RPC reply : ");
            strcat(chunk, reply);
        }
        if(!RPCObjectManager::instance().is_empty())
        {
            alarmCreated = 1;
            
            strcat(chunk, "<p>Objects created :</p>");

            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, " (<a href=\"http://");
                strcat(chunk, EthernetInterface::getIPAddress());
                strcat(chunk, "/");
                strcat(chunk, *itor);
                strcat(chunk, "/delete\">delete</a>)");
                strcat(chunk, "</li>");
            }
            strcat(chunk, "</ul>");
        }
        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, "</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, "<select id=\"minute\">");
                        
            strcat(chunk, "<option ");
            if(_alarm.minutes == 1){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"1\">1</option>");
            
            strcat(chunk, "<option ");
            if(_alarm.minutes == 2){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"2\">2</option>");
            
            strcat(chunk, "<option ");
            if(_alarm.minutes == 3){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"3\">3</option>");
            
            strcat(chunk, "<option ");
            if(_alarm.minutes == 4){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"4\">4</option>");
            
            strcat(chunk, "<option ");
            if(_alarm.minutes == 5){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"5\">5</option>");
            
            strcat(chunk, "<option ");
            if(_alarm.minutes == 6){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"6\">6</option>");
            
            strcat(chunk, "<option ");
            if(_alarm.minutes == 7){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"7\">7</option>");
            
            strcat(chunk, "<option ");
            if(_alarm.minutes == 8){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"8\">8</option>");
            
            strcat(chunk, "<option ");
            if(_alarm.minutes == 9){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"9\">9</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 || _alarm.minutes == 0){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"12\">12</option>");


            strcat(chunk, "</select>");
            */
            
           
            
            
          /*  strcat(chunk, "<select id=\"ampm\">");
            strcat(chunk, "<option ");
            if(_alarm.amPm == 0){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"0\">AM</option>");
            
            strcat(chunk, "<option ");
            if(_alarm.amPm == 1){ strcat(chunk, "selected=\"selected\""); }
            strcat(chunk, "value=\"1\">PM</option>");
            
            strcat(chunk, "</select>");*/
            
            
            //strcat(chunk, "AMPM: <input type= \"text\" id=\"ampm\" maxlength=127>");  
            strcat(chunk, "<br><p>");
            strcat(chunk, "<input type=\"button\" value=\"Save\" onclick=\"javascript:submitAlarmPreferences();\">");
            //strcat(chunk, "</p><br><p>");
            strcat(chunk, "<input type=\"button\" value=\"Set\" onclick=\"javascript:setAlarm();\">");
            strcat(chunk, "</p><br></form>");
            //strcat(chunk, "</form>");   
        }
    }
    else if(c == 2)
        strcat(chunk, INTERACTIVE_HTML_CODE_2);
}