[tuxdroid-svn] r5260 - software_suite_v3/smart-core/smart-api/cpp/API
Status: Beta
Brought to you by:
ks156
|
From: JDM <c2m...@c2...> - 2009-07-31 21:05:29
|
Author: JDM Date: 2009-07-31 23:05:11 +0200 (Fri, 31 Jul 2009) New Revision: 5260 Modified: software_suite_v3/smart-core/smart-api/cpp/API/TuxAPI.c software_suite_v3/smart-core/smart-api/cpp/API/TuxAPI.h Log: * Added namespace TuxDroid for C++ API Modified: software_suite_v3/smart-core/smart-api/cpp/API/TuxAPI.c =================================================================== --- software_suite_v3/smart-core/smart-api/cpp/API/TuxAPI.c 2009-07-31 14:47:05 UTC (rev 5259) +++ software_suite_v3/smart-core/smart-api/cpp/API/TuxAPI.c 2009-07-31 21:05:11 UTC (rev 5260) @@ -34,7 +34,7 @@ * * ==================================================== * - * More informations about the C++ API: http://bbs.tuxisalive.com/viewtopic.php?pid=678 + * More informations about the C++ API: http://bbs.tuxisalive.com/viewtopic.php?pid=678#p678 * * */ @@ -42,603 +42,619 @@ #include <iostream> #include <string.h> #include <vector> +#include <sstream> //string_to_double(); #include "TuxAPI.h" using namespace std; -string ReplaceAllG(string strSrc, string strSearch, string strReplace){ - size_t start, end = 0, sizeSearch = strSearch.size(); - while((start = strSrc.find(strSearch, end))!=string::npos){ - end = start + sizeSearch; - strSrc.replace(start, sizeSearch, strReplace); - } - return strSrc; -} -TuxAPI::TuxAPI(void) +namespace TuxDroid { -} - -//Interaction with the TuxHttp server -string TuxAPI::doUrlAction(TuxAPI_LEVEL level, string url) -{ - -#ifdef WIN32 - WSADATA WSAData; - WSAStartup(MAKEWORD(2,0), &WSAData); - - SOCKET sock; - SOCKADDR_IN sin; -#else - int sock; - struct sockaddr_in sin; -#endif - - char buffer[1024]; - - string srequete = "GET /"; - - switch(level) + string ReplaceAllG(string strSrc, string strSearch, string strReplace) { - case CLIENT_LEVEL_ANONYME: srequete += "-1"; - break; - case CLIENT_LEVEL_FREE: srequete += "0"; - break; - case CLIENT_LEVEL_RESTRICTED: srequete += "1"; - break; - case CLIENT_LEVEL_ROOT: srequete += "2"; - break; + size_t start, end = 0, sizeSearch = strSearch.size(); + while((start = strSrc.find(strSearch, end))!=string::npos) + { + end = start + sizeSearch; + strSrc.replace(start, sizeSearch, strReplace); + } + return strSrc; } + TuxAPI::TuxAPI(void) + { + } - srequete += url; - srequete += " HTTP/1.1\r\n"; - srequete += "\r\n"; + //Interaction with the TuxHttp server + string TuxAPI::doUrlAction(TuxAPI_LEVEL level, string url) + { + + #ifdef WIN32 + WSADATA WSAData; + WSAStartup(MAKEWORD(2,0), &WSAData); - //cout << srequete << endl; + SOCKET sock; + SOCKADDR_IN sin; + #else + int sock; + struct sockaddr_in sin; + #endif + + char buffer[1024]; + + string srequete = "GET /"; - size_t requete_taille = srequete.size() + 1; - - char crequete[requete_taille]; - strncpy( crequete, srequete.c_str(), requete_taille ); - - int i = 0; - string source = ""; - - sock = socket(AF_INET, SOCK_STREAM, 0); - - sin.sin_addr.s_addr = inet_addr("127.0.0.1"); - sin.sin_port = 270; - sin.sin_family = AF_INET; - sin.sin_port = htons(270); - -#ifdef WIN32 - connect(sock, (SOCKADDR *)&sin, sizeof(sin)); // on se connecte sur le site web. -#else - connect(sock, (struct sockaddr *)&sin, sizeof(sin)); -#endif - - send(sock, crequete, strlen(crequete), 0); // on envoie la requ HTTP. - - do + switch(level) + { + case CLIENT_LEVEL_ANONYME: srequete += "-1"; + break; + case CLIENT_LEVEL_FREE: srequete += "0"; + break; + case CLIENT_LEVEL_RESTRICTED: srequete += "1"; + break; + case CLIENT_LEVEL_ROOT: srequete += "2"; + break; + } + + + srequete += url; + srequete += " HTTP/1.1\r\n"; + srequete += "\r\n"; + + //cout << srequete << endl; + + size_t requete_taille = srequete.size() + 1; + + char crequete[requete_taille]; + strncpy( crequete, srequete.c_str(), requete_taille ); + + int i = 0; + string source = ""; + + sock = socket(AF_INET, SOCK_STREAM, 0); + + sin.sin_addr.s_addr = inet_addr("127.0.0.1"); + sin.sin_port = 270; + sin.sin_family = AF_INET; + sin.sin_port = htons(270); + + #ifdef WIN32 + connect(sock, (SOCKADDR *)&sin, sizeof(sin)); // on se connecte sur le site web. + #else + connect(sock, (struct sockaddr *)&sin, sizeof(sin)); + #endif + + send(sock, crequete, strlen(crequete), 0); // on envoie la requ HTTP. + + do + { + i = recv(sock, buffer, sizeof(buffer), 0); // le buffer rp les donn res. + source += buffer; + } while (i != 0); + + #ifdef WIN32 + closesocket(sock); // on ferme le socket. + WSACleanup(); + #else + close(sock); + #endif + + return source; + } + + //Allow tux do an action with his motors + void TuxAPI::doMotorAction(TuxAPI_LEVEL level, TuxAPI_ACTION action) { - i = recv(sock, buffer, sizeof(buffer), 0); // le buffer rp les donn res. - source += buffer; - } while (i != 0); - -#ifdef WIN32 - closesocket(sock); // on ferme le socket. - WSACleanup(); -#else - close(sock); -#endif - - return source; -} - -//Allow tux do an action with his motors -void TuxAPI::doMotorAction(TuxAPI_LEVEL level, TuxAPI_ACTION action) -{ - switch(action) - { - case FLIPPERS_UP: doUrlAction(level, "/flippers/up?"); - break; - case FLIPPERS_DOWN: doUrlAction(level, "/flippers/down?"); - break; - case MOUTH_OPEN: doUrlAction(level, "/mouth/open?"); - break; - case MOUTH_CLOSE: doUrlAction(level, "/mouth/close?"); - break; - case EYES_OPEN: doUrlAction(level, "/eyes/open?"); - break; - case EYES_CLOSE: doUrlAction(level, "/eyes/close?"); - break; - } -} - -//Allow rotate Tux left/right -void TuxAPI::DoRotorAction(TuxAPI_LEVEL level, TuxAPI_ACTION action, int rotation) -{ - char cmd[4096]; - - switch(action) - { - case ROTATE_LEFT: strcpy(cmd, "/spinning/left_on?count="); + switch(action) + { + case FLIPPERS_UP: doUrlAction(level, "/flippers/up?"); + break; + case FLIPPERS_DOWN: doUrlAction(level, "/flippers/down?"); + break; + case MOUTH_OPEN: doUrlAction(level, "/mouth/open?"); + break; + case MOUTH_CLOSE: doUrlAction(level, "/mouth/close?"); + break; + case EYES_OPEN: doUrlAction(level, "/eyes/open?"); + break; + case EYES_CLOSE: doUrlAction(level, "/eyes/close?"); + break; + } + } + + //Allow rotate Tux left/right + void TuxAPI::DoRotorAction(TuxAPI_LEVEL level, TuxAPI_ACTION action, int rotation) + { + char cmd[4096]; + + switch(action) + { + case ROTATE_LEFT: strcpy(cmd, "/spinning/left_on?count="); + break; + case ROTATE_RIGHT: strcpy(cmd, "spinning/right_on?count="); + break; + } + + + char _rotation[50]; + sprintf(_rotation, "%d", rotation); + strcat(cmd, _rotation); + + doUrlAction(level, cmd); + } + + void TuxAPI::DoLedsAction(TuxAPI_LEVEL level, TuxAPI_ACTION action, TuxAPI_LEDS leds) + { + char cmd[4096]; + strcpy(cmd, "/leds/"); + + switch(action) + { + case LEDS_ON: strcat(cmd, "on?leds="); break; - case ROTATE_RIGHT: strcpy(cmd, "spinning/right_on?count="); + case LEDS_OFF: strcat(cmd, "off?leds="); break; - } - - - char _rotation[50]; - sprintf(_rotation, "%d", rotation); - strcat(cmd, _rotation); - - doUrlAction(level, cmd); -} - -void TuxAPI::DoLedsAction(TuxAPI_LEVEL level, TuxAPI_ACTION action, TuxAPI_LEDS leds) -{ - char cmd[4096]; - strcpy(cmd, "/leds/"); - - switch(action) - { - case LEDS_ON: strcat(cmd, "on?leds="); - break; - case LEDS_OFF: strcat(cmd, "off?leds="); - break; - } - - switch(leds) - { - case LED_BOTH: strcat(cmd, "LED_BOTH"); - break; - case LED_LEFT: strcat(cmd, "LED_LEFT"); - break; - case LED_RIGHT: strcat(cmd, "LED_RIGHT"); - break; - } - - if(action == LEDS_ON) - strcat(cmd, "&intensity=10.0"); - - doUrlAction(level, cmd); -} - -void TuxAPI::DoLedsAction(TuxAPI_LEVEL level, TuxAPI_ACTION action, TuxAPI_LEDS leds, double intensity) -{ - char cmd[4096]; - strcpy(cmd, "/leds/"); - - switch(action) - { - case LEDS_ON: strcat(cmd, "on?leds="); - break; - case LEDS_OFF: strcat(cmd, "off?leds="); - break; - } - - switch(leds) - { - case LED_BOTH: strcat(cmd, "LED_BOTH"); - break; - case LED_LEFT: strcat(cmd, "LED_LEFT"); - break; - case LED_RIGHT: strcat(cmd, "LED_RIGHT"); - break; - } - + } + + switch(leds) + { + case LED_BOTH: strcat(cmd, "LED_BOTH"); + break; + case LED_LEFT: strcat(cmd, "LED_LEFT"); + break; + case LED_RIGHT: strcat(cmd, "LED_RIGHT"); + break; + } + + if(action == LEDS_ON) + strcat(cmd, "&intensity=10.0"); + + doUrlAction(level, cmd); + } - if(action == LEDS_ON) - { - strcat(cmd, "&intensity="); - char _intensity[50]; - sprintf(_intensity,"%.2f",(intensity+0.1)); - strcat(cmd, _intensity); - } + void TuxAPI::DoLedsAction(TuxAPI_LEVEL level, TuxAPI_ACTION action, TuxAPI_LEDS leds, double intensity) + { + char cmd[4096]; + strcpy(cmd, "/leds/"); + + switch(action) + { + case LEDS_ON: strcat(cmd, "on?leds="); + break; + case LEDS_OFF: strcat(cmd, "off?leds="); + break; + } + + switch(leds) + { + case LED_BOTH: strcat(cmd, "LED_BOTH"); + break; + case LED_LEFT: strcat(cmd, "LED_LEFT"); + break; + case LED_RIGHT: strcat(cmd, "LED_RIGHT"); + break; + } - doUrlAction(level, cmd); -} - -void TuxAPI::DoBlinkLedsAction(TuxAPI_LEVEL level, TuxAPI_LEDS leds, int count) -{ - char cmd[4096]; - strcpy(cmd, "/leds/blink/count?count="); - strcat(cmd, (char *)count); - strcat(cmd, "&delay=0.1"); - - switch(leds) - { - case LED_BOTH: strcat(cmd, "LED_BOTH"); - break; - case LED_LEFT: strcat(cmd, "LED_LEFT"); - break; - case LED_RIGHT: strcat(cmd, "LED_RIGHT"); - break; - } - - doUrlAction(level,cmd); -} - -void TuxAPI::DoBlinkLedsAction(TuxAPI_LEVEL level, TuxAPI_LEDS leds, int count, double delay) -{ - char cmd[4096]; - strcpy(cmd, "/leds/blink/count?count="); - strcat(cmd, (char *)count); - strcat(cmd, "&delay="); - - char _delay[50]; - sprintf(_delay, "%.2f",(delay+0.1)); - strcat(cmd, _delay); - - switch(leds) - { - case LED_BOTH: strcat(cmd, "LED_BOTH"); - break; - case LED_LEFT: strcat(cmd, "LED_LEFT"); - break; - case LED_RIGHT: strcat(cmd, "LED_RIGHT"); - break; - } - - doUrlAction(level,cmd); -} - - -void TuxAPI::DoSpeak(TuxAPI_LEVEL level, char *Text) -{ + + if(action == LEDS_ON) + { + strcat(cmd, "&intensity="); + char _intensity[50]; + sprintf(_intensity,"%.2f",(intensity+0.1)); + strcat(cmd, _intensity); + } + + doUrlAction(level, cmd); + } + + void TuxAPI::DoBlinkLedsAction(TuxAPI_LEVEL level, TuxAPI_LEDS leds, int count) + { char cmd[4096]; - strcpy(cmd,"/tts/speak?text="); - strcat(cmd,Text); + strcpy(cmd, "/leds/blink/count?count="); + strcat(cmd, (char *)count); + strcat(cmd, "&delay=0.1"); - string cmd_ = cmd; - cmd_ = ReplaceAllG(cmd_, " ", "%20"); - strcpy(cmd, cmd_.c_str()); - - - doUrlAction(level, cmd); -} - -void TuxAPI::DoSpeak(TuxAPI_LEVEL level, TuxAPI_SPEAK_LOCUTOR locutor, char *Text) -{ - char cmd[4096]; - strcpy(cmd, "/tts/locutor?name="); - - switch(locutor) + switch(leds) { - case Bruno: strcat(cmd, "Bruno"); + case LED_BOTH: strcat(cmd, "LED_BOTH"); break; - case Julie: strcat(cmd, "Julie"); + case LED_LEFT: strcat(cmd, "LED_LEFT"); break; - } + case LED_RIGHT: strcat(cmd, "LED_RIGHT"); + break; + } - doUrlAction(level, cmd); //set the locutor - - strcpy(cmd, "/tts/speak?text="); - strcat(cmd, Text); - - string cmd_ = cmd; - cmd_ = ReplaceAllG(cmd_, " ", "%20"); - strcpy(cmd, cmd_.c_str()); - - - doUrlAction(level, cmd); //speak -} - -void TuxAPI::DoSpeak(TuxAPI_LEVEL level, int pitch, char *Text) -{ + doUrlAction(level,cmd); + } + + void TuxAPI::DoBlinkLedsAction(TuxAPI_LEVEL level, TuxAPI_LEDS leds, int count, double delay) + { char cmd[4096]; - strcpy(cmd, "/tts/pitch?value="); - char _pitch[256]; - sprintf(_pitch, "%d", pitch); - strcat(cmd, _pitch); - - - doUrlAction(level, cmd); //set the pitch + strcpy(cmd, "/leds/blink/count?count="); + strcat(cmd, (char *)count); + strcat(cmd, "&delay="); - strcpy(cmd, "/tts/speak?text="); - strcat(cmd, Text); + char _delay[50]; + sprintf(_delay, "%.2f",(delay+0.1)); + strcat(cmd, _delay); - string cmd_ = cmd; - cmd_ = ReplaceAllG(cmd_, " ", "%20"); - strcpy(cmd, cmd_.c_str()); - - - doUrlAction(level, cmd); //speak -} - -void TuxAPI::DoSpeak(TuxAPI_LEVEL level, TuxAPI_SPEAK_LOCUTOR locutor, int pitch, char *Text) -{ - char cmd[4096]; - strcpy(cmd, "/tts/locutor?name="); - - switch(locutor) + switch(leds) { - case Bruno: strcat(cmd, "Bruno"); + case LED_BOTH: strcat(cmd, "LED_BOTH"); break; - case Julie: strcat(cmd, "Julie"); + case LED_LEFT: strcat(cmd, "LED_LEFT"); break; - } - - doUrlAction(level, cmd); //set the locutor - - strcpy(cmd, "/tts/pitch?value="); - char _pitch[256]; - sprintf(_pitch, "%d", pitch); - strcat(cmd, _pitch); - - - doUrlAction(level, cmd); //set the pitch - - strcpy(cmd, "/tts/speak?text="); - strcat(cmd, Text); - - string cmd_ = cmd; - cmd_ = ReplaceAllG(cmd_, " ", "%20"); - strcpy(cmd, cmd_.c_str()); - - - doUrlAction(level, cmd); //speak -} - -void TuxAPI::AttituneControl(TuxAPI_LEVEL level, TuxAPI_ACTION action, char *attitune) -{ - char cmd[8128]; - strcpy(cmd, "/attitune/"); - - switch(action) - { - case ATTITUNE_PLAY: - { - strcat(cmd, "load_and_play?path="); - strcat(cmd, attitune); - } - break; - case ATTITUNE_STOP: strcat(cmd, "stop?"); + case LED_RIGHT: strcat(cmd, "LED_RIGHT"); break; - } + } doUrlAction(level,cmd); -} - -void TuxAPI::WavControl(TuxAPI_LEVEL level, TuxAPI_ACTION action, char *sound) -{ - char cmd[8128]; - strcpy(cmd, "/wav/"); - - switch(action) - { - case ATTITUNE_PLAY: - { - strcat(cmd, "play?path="); - strcat(cmd, sound); - } - break; - case ATTITUNE_STOP: strcat(cmd, "stop?"); - break; - } - - doUrlAction(level,cmd); -} - -int Split(vector<string>& vecteur, string chaine, char separateur) -{ - vecteur.clear(); + } - string::size_type stTemp = chaine.find(separateur); - while(stTemp != string::npos) + void TuxAPI::DoSpeak(TuxAPI_LEVEL level, char *Text) { - vecteur.push_back(chaine.substr(0, stTemp)); - chaine = chaine.substr(stTemp + 1); - stTemp = chaine.find(separateur); + char cmd[4096]; + strcpy(cmd,"/tts/speak?text="); + strcat(cmd,Text); + + string cmd_ = cmd; + cmd_ = ReplaceAllG(cmd_, " ", "%20"); + strcpy(cmd, cmd_.c_str()); + + + doUrlAction(level, cmd); } - vecteur.push_back(chaine); - - return vecteur.size(); -} - -string TuxAPI::getRawStatus(TuxAPI_LEVEL level, TuxAPI_STATUS_REQUESTED status) -{ - char cmd[4096]; - strcpy(cmd, "/status/request_one?status_name="); - - switch(status) - { - case flippers_motor_on: strcat(cmd, "flippers_motor_on"); - break; - case flippers_position: strcat(cmd, "flippers_position"); - break; - - - case eyes_motor_on: strcat(cmd, "eyes_motor_on"); + void TuxAPI::DoSpeak(TuxAPI_LEVEL level, TuxAPI_SPEAK_LOCUTOR locutor, char *Text) + { + char cmd[4096]; + strcpy(cmd, "/tts/locutor?name="); + + switch(locutor) + { + case Bruno: strcat(cmd, "Bruno"); break; - case eyes_position: strcat(cmd,"eyes_position"); + case Julie: strcat(cmd, "Julie"); break; - case eyes_remaining_movements: strcat(cmd, "eyes_remaining_movements"); + } + + doUrlAction(level, cmd); //set the locutor + + strcpy(cmd, "/tts/speak?text="); + strcat(cmd, Text); + + string cmd_ = cmd; + cmd_ = ReplaceAllG(cmd_, " ", "%20"); + strcpy(cmd, cmd_.c_str()); + + + doUrlAction(level, cmd); //speak + } + + void TuxAPI::DoSpeak(TuxAPI_LEVEL level, int pitch, char *Text) + { + char cmd[4096]; + strcpy(cmd, "/tts/pitch?value="); + char _pitch[256]; + sprintf(_pitch, "%d", pitch); + strcat(cmd, _pitch); + + + doUrlAction(level, cmd); //set the pitch + + strcpy(cmd, "/tts/speak?text="); + strcat(cmd, Text); + + string cmd_ = cmd; + cmd_ = ReplaceAllG(cmd_, " ", "%20"); + strcpy(cmd, cmd_.c_str()); + + + doUrlAction(level, cmd); //speak + } + + void TuxAPI::DoSpeak(TuxAPI_LEVEL level, TuxAPI_SPEAK_LOCUTOR locutor, int pitch, char *Text) + { + char cmd[4096]; + strcpy(cmd, "/tts/locutor?name="); + + switch(locutor) + { + case Bruno: strcat(cmd, "Bruno"); break; - - case mouth_motor_on: strcat(cmd, "mouth_motor_on"); + case Julie: strcat(cmd, "Julie"); break; - case mouth_position: strcat(cmd, "mouth_position"); + } + + doUrlAction(level, cmd); //set the locutor + + strcpy(cmd, "/tts/pitch?value="); + char _pitch[256]; + sprintf(_pitch, "%d", pitch); + strcat(cmd, _pitch); + + + doUrlAction(level, cmd); //set the pitch + + strcpy(cmd, "/tts/speak?text="); + strcat(cmd, Text); + + string cmd_ = cmd; + cmd_ = ReplaceAllG(cmd_, " ", "%20"); + strcpy(cmd, cmd_.c_str()); + + + doUrlAction(level, cmd); //speak + } + + void TuxAPI::AttituneControl(TuxAPI_LEVEL level, TuxAPI_ACTION action, char *attitune) + { + char cmd[8128]; + strcpy(cmd, "/attitune/"); + + switch(action) + { + case ATTITUNE_PLAY: + { + strcat(cmd, "load_and_play?path="); + strcat(cmd, attitune); + } + break; + case ATTITUNE_STOP: strcat(cmd, "stop?"); break; - case mouth_remaining_movements: strcat(cmd, "mouth_remaining_movements"); + } + + doUrlAction(level,cmd); + } + + void TuxAPI::WavControl(TuxAPI_LEVEL level, TuxAPI_ACTION action, char *sound) + { + char cmd[8128]; + strcpy(cmd, "/wav/"); + + switch(action) + { + case ATTITUNE_PLAY: + { + strcat(cmd, "play?path="); + strcat(cmd, sound); + } + break; + case ATTITUNE_STOP: strcat(cmd, "stop?"); break; - - case spin_left_motor_on: strcat(cmd, "spin_left_motor_on"); + } + + doUrlAction(level,cmd); + } + + int Split(vector<string>& vecteur, string chaine, char separateur) + { + vecteur.clear(); + + string::size_type stTemp = chaine.find(separateur); + + while(stTemp != string::npos) + { + vecteur.push_back(chaine.substr(0, stTemp)); + chaine = chaine.substr(stTemp + 1); + stTemp = chaine.find(separateur); + } + + vecteur.push_back(chaine); + + return vecteur.size(); + } + + string TuxAPI::getRawStatus(TuxAPI_LEVEL level, TuxAPI_STATUS_REQUESTED status) + { + char cmd[4096]; + strcpy(cmd, "/status/request_one?status_name="); + + switch(status) + { + case flippers_motor_on: strcat(cmd, "flippers_motor_on"); break; - case spin_right_motor_on: strcat(cmd, "spin_right_motor_on"); + case flippers_position: strcat(cmd, "flippers_position"); break; - case spinning_direction: strcat(cmd, "spinning_direction"); - break; - case spinning_remaining_movements: strcat(cmd, "spinning_remaining_movements"); - break; - - case right_led_state: strcat(cmd, "right_led_state"); - break; - case left_led_state: strcat(cmd, "left_led_state"); - break; - - - case light_level: strcat(cmd, "light_level"); - break; - case battery_state: strcat(cmd, "battery_state"); - break; - case battery_level: strcat(cmd, "battery_level"); - break; - case charger_state: strcat(cmd, "charger_state"); - break; - - } - - string data_raw = doUrlAction(level, cmd); - - vector<string> VecStr; - int s = Split(VecStr, data_raw, '>'); - - string data = VecStr[10]; - data = ReplaceAllG(data, "</value", ""); - - - return data; + + + case eyes_motor_on: strcat(cmd, "eyes_motor_on"); + break; + case eyes_position: strcat(cmd,"eyes_position"); + break; + case eyes_remaining_movements: strcat(cmd, "eyes_remaining_movements"); + break; + + case mouth_motor_on: strcat(cmd, "mouth_motor_on"); + break; + case mouth_position: strcat(cmd, "mouth_position"); + break; + case mouth_remaining_movements: strcat(cmd, "mouth_remaining_movements"); + break; + + case spin_left_motor_on: strcat(cmd, "spin_left_motor_on"); + break; + case spin_right_motor_on: strcat(cmd, "spin_right_motor_on"); + break; + case spinning_direction: strcat(cmd, "spinning_direction"); + break; + case spinning_remaining_movements: strcat(cmd, "spinning_remaining_movements"); + break; + + case right_led_state: strcat(cmd, "right_led_state"); + break; + case left_led_state: strcat(cmd, "left_led_state"); + break; + + + case light_level: strcat(cmd, "light_level"); + break; + case battery_state: strcat(cmd, "battery_state"); + break; + case battery_level: strcat(cmd, "battery_level"); + break; + case charger_state: strcat(cmd, "charger_state"); + break; + + } + + string data_raw = doUrlAction(level, cmd); + + vector<string> VecStr; + int s = Split(VecStr, data_raw, '>'); + + string data = VecStr[10]; + data = ReplaceAllG(data, "</value", ""); + + + return data; + } + + + //=============== PUBLIC =============== + + void TuxAPI::Flippers_Up(void) + { + doMotorAction(CLIENT_LEVEL_FREE, FLIPPERS_UP); + } + + void TuxAPI::Flippers_Down(void) + { + doMotorAction(CLIENT_LEVEL_FREE, FLIPPERS_DOWN); + } + + void TuxAPI::Mouth_Open(void) + { + doMotorAction(CLIENT_LEVEL_FREE, MOUTH_OPEN); + } + + void TuxAPI::Mouth_Close(void) + { + doMotorAction(CLIENT_LEVEL_FREE, MOUTH_CLOSE); + } + + void TuxAPI::Eyes_Open(void) + { + doMotorAction(CLIENT_LEVEL_FREE, EYES_OPEN); + } + + void TuxAPI::Eyes_Close(void) + { + doMotorAction(CLIENT_LEVEL_FREE, EYES_CLOSE); + } + + void TuxAPI::Rotation_Left(int rotation) + { + DoRotorAction(CLIENT_LEVEL_FREE, ROTATE_LEFT, rotation); + } + + void TuxAPI::Rotation_Right(int rotation) + { + DoRotorAction(CLIENT_LEVEL_FREE, ROTATE_RIGHT, rotation); + } + + void TuxAPI::Leds_On(void) + { + DoLedsAction(CLIENT_LEVEL_FREE, LEDS_ON, LED_BOTH); + } + + void TuxAPI::Leds_On(TuxAPI_LEDS leds) + { + DoLedsAction(CLIENT_LEVEL_FREE, LEDS_ON, leds); + } + + void TuxAPI::Leds_On(double intensity) + { + DoLedsAction(CLIENT_LEVEL_FREE, LEDS_ON, LED_BOTH, intensity); + } + + void TuxAPI::Leds_On(TuxAPI_LEDS leds, double intensity) + { + DoLedsAction(CLIENT_LEVEL_FREE, LEDS_ON, leds, intensity); + } + + void TuxAPI::Leds_Off(void) + { + DoLedsAction(CLIENT_LEVEL_FREE, LEDS_OFF, LED_BOTH); + } + + void TuxAPI::Leds_Off(TuxAPI_LEDS leds) + { + DoLedsAction(CLIENT_LEVEL_FREE, LEDS_OFF, leds); + } + + void TuxAPI::Leds_Blink(void) + { + DoBlinkLedsAction(CLIENT_LEVEL_FREE, LED_BOTH, 1); + } + + void TuxAPI::Leds_Blink(TuxAPI_LEDS leds) + { + DoBlinkLedsAction(CLIENT_LEVEL_FREE, leds, 1); + } + + void TuxAPI::Leds_Blink(TuxAPI_LEDS leds, int count) + { + DoBlinkLedsAction(CLIENT_LEVEL_FREE, leds, count); + } + + void TuxAPI::Leds_Blink(TuxAPI_LEDS leds, int count, double delay) + { + DoBlinkLedsAction(CLIENT_LEVEL_FREE, leds, count, delay); + } + + void TuxAPI::Speak(char *Text) + { + DoSpeak(CLIENT_LEVEL_FREE, Text); + } + + void TuxAPI::Speak(TuxAPI_SPEAK_LOCUTOR locutor, char *Text) + { + DoSpeak(CLIENT_LEVEL_FREE, locutor, Text); + } + + void TuxAPI::Speak(int pitch, char *Text) + { + DoSpeak(CLIENT_LEVEL_FREE, pitch, Text); + } + + void TuxAPI::Speak(TuxAPI_SPEAK_LOCUTOR locutor, int pitch, char *Text) + { + DoSpeak(CLIENT_LEVEL_FREE, locutor, pitch, Text); + } + + void TuxAPI::PlayAttitune(char *attitune) + { + AttituneControl(CLIENT_LEVEL_FREE, ATTITUNE_PLAY, attitune); + } + + void TuxAPI::StopAttitune(void) + { + AttituneControl(CLIENT_LEVEL_FREE, ATTITUNE_STOP, ""); + } + + void TuxAPI::PlayWav(char *sound) + { + WavControl(CLIENT_LEVEL_FREE, WAV_PLAY, sound); + } + + void TuxAPI::StopWav(void) + { + WavControl(CLIENT_LEVEL_FREE, WAV_STOP, ""); + } + + string TuxAPI::getStatus(TuxAPI_STATUS_REQUESTED status) + { + return getRawStatus(CLIENT_LEVEL_FREE, status); + } + + double strtodbl( const std::string& s ) + { + std::istringstream i(s); + double x; + if (!(i >> x)) + return 0; + return x; + } } - - -//=============== PUBLIC =============== - -void TuxAPI::Flippers_Up(void) -{ - doMotorAction(CLIENT_LEVEL_FREE, FLIPPERS_UP); -} - -void TuxAPI::Flippers_Down(void) -{ - doMotorAction(CLIENT_LEVEL_FREE, FLIPPERS_DOWN); -} - -void TuxAPI::Mouth_Open(void) -{ - doMotorAction(CLIENT_LEVEL_FREE, MOUTH_OPEN); -} - -void TuxAPI::Mouth_Close(void) -{ - doMotorAction(CLIENT_LEVEL_FREE, MOUTH_CLOSE); -} - -void TuxAPI::Eyes_Open(void) -{ - doMotorAction(CLIENT_LEVEL_FREE, EYES_OPEN); -} - -void TuxAPI::Eyes_Close(void) -{ - doMotorAction(CLIENT_LEVEL_FREE, EYES_CLOSE); -} - -void TuxAPI::Rotation_Left(int rotation) -{ - DoRotorAction(CLIENT_LEVEL_FREE, ROTATE_LEFT, rotation); -} - -void TuxAPI::Rotation_Right(int rotation) -{ - DoRotorAction(CLIENT_LEVEL_FREE, ROTATE_RIGHT, rotation); -} - -void TuxAPI::Leds_On(void) -{ - DoLedsAction(CLIENT_LEVEL_FREE, LEDS_ON, LED_BOTH); -} - -void TuxAPI::Leds_On(TuxAPI_LEDS leds) -{ - DoLedsAction(CLIENT_LEVEL_FREE, LEDS_ON, leds); -} - -void TuxAPI::Leds_On(double intensity) -{ - DoLedsAction(CLIENT_LEVEL_FREE, LEDS_ON, LED_BOTH, intensity); -} - -void TuxAPI::Leds_On(TuxAPI_LEDS leds, double intensity) -{ - DoLedsAction(CLIENT_LEVEL_FREE, LEDS_ON, leds, intensity); -} - -void TuxAPI::Leds_Off(void) -{ - DoLedsAction(CLIENT_LEVEL_FREE, LEDS_OFF, LED_BOTH); -} - -void TuxAPI::Leds_Off(TuxAPI_LEDS leds) -{ - DoLedsAction(CLIENT_LEVEL_FREE, LEDS_OFF, leds); -} - -void TuxAPI::Leds_Blink(void) -{ - DoBlinkLedsAction(CLIENT_LEVEL_FREE, LED_BOTH, 1); -} - -void TuxAPI::Leds_Blink(TuxAPI_LEDS leds) -{ - DoBlinkLedsAction(CLIENT_LEVEL_FREE, leds, 1); -} - -void TuxAPI::Leds_Blink(TuxAPI_LEDS leds, int count) -{ - DoBlinkLedsAction(CLIENT_LEVEL_FREE, leds, count); -} - -void TuxAPI::Leds_Blink(TuxAPI_LEDS leds, int count, double delay) -{ - DoBlinkLedsAction(CLIENT_LEVEL_FREE, leds, count, delay); -} - -void TuxAPI::Speak(char *Text) -{ - DoSpeak(CLIENT_LEVEL_FREE, Text); -} - -void TuxAPI::Speak(TuxAPI_SPEAK_LOCUTOR locutor, char *Text) -{ - DoSpeak(CLIENT_LEVEL_FREE, locutor, Text); -} - -void TuxAPI::Speak(int pitch, char *Text) -{ - DoSpeak(CLIENT_LEVEL_FREE, pitch, Text); -} - -void TuxAPI::Speak(TuxAPI_SPEAK_LOCUTOR locutor, int pitch, char *Text) -{ - DoSpeak(CLIENT_LEVEL_FREE, locutor, pitch, Text); -} - -void TuxAPI::PlayAttitune(char *attitune) -{ - AttituneControl(CLIENT_LEVEL_FREE, ATTITUNE_PLAY, attitune); -} - -void TuxAPI::StopAttitune(void) -{ - AttituneControl(CLIENT_LEVEL_FREE, ATTITUNE_STOP, ""); -} - -void TuxAPI::PlayWav(char *sound) -{ - WavControl(CLIENT_LEVEL_FREE, WAV_PLAY, sound); -} - -void TuxAPI::StopWav(void) -{ - WavControl(CLIENT_LEVEL_FREE, WAV_STOP, ""); -} - -string TuxAPI::getStatus(TuxAPI_STATUS_REQUESTED status) -{ - return getRawStatus(CLIENT_LEVEL_FREE, status); -} Modified: software_suite_v3/smart-core/smart-api/cpp/API/TuxAPI.h =================================================================== --- software_suite_v3/smart-core/smart-api/cpp/API/TuxAPI.h 2009-07-31 14:47:05 UTC (rev 5259) +++ software_suite_v3/smart-core/smart-api/cpp/API/TuxAPI.h 2009-07-31 21:05:11 UTC (rev 5260) @@ -41,211 +41,211 @@ using namespace std; -enum TuxAPI_LEVEL -{ - CLIENT_LEVEL_ANONYME = -1, - CLIENT_LEVEL_FREE = 0, - CLIENT_LEVEL_RESTRICTED = 1, - CLIENT_LEVEL_ROOT = 2, -}; -/// <summary> -/// All action can do Tux -/// </summary> -enum TuxAPI_ACTION +namespace TuxDroid { - FLIPPERS_UP = 1, - FLIPPERS_DOWN = 2, - - MOUTH_OPEN = 3, - MOUTH_CLOSE = 4, - - EYES_OPEN = 5, - EYES_CLOSE = 6, - - LEDS_ON = 7, - LEDS_OFF = 8, - - ROTATE_LEFT = 9, - ROTATE_RIGHT = 10, - - ATTITUNE_PLAY = 11, - ATTITUNE_STOP = 12, - - WAV_PLAY = 13, - WAV_STOP = 14, -}; - -/// <summary> -/// The TTS voice (TODO: Add others voices) -/// </summary> -enum TuxAPI_SPEAK_LOCUTOR -{ - Bruno = 0, - Julie = 1, -}; - -/// <summary> -/// //<<LED_BOTH|LED_RIGHT|LED_LEFT>> -/// </summary> -enum TuxAPI_LEDS -{ - LED_BOTH = 0, - LED_LEFT = 1, - LED_RIGHT = 2, -}; - -enum TuxAPI_STATUS_REQUESTED -{ - flippers_motor_on = 0, - flippers_position = 1, - flippers_remaining_movements = 2, - - eyes_motor_on = 3, - eyes_position = 4, - eyes_remaining_movements = 5, - - mouth_motor_on = 6, - mouth_position = 7, - mouth_remaining_movements = 8, - - spin_left_motor_on = 9, - spin_right_motor_on = 10, - spinning_direction = 11, - spinning_remaining_movements = 12, - - light_level = 13, - right_led_state = 14, - left_led_state = 15, - - battery_level = 16, - battery_state = 17, - charger_state = 18, - - //----------- - - /* TODO: modify the number of any status - descriptor_complete = 4, - radio_state = 5, - dongle_plug = 6, - - - connection_quality = 15, + double strtodbl(const std::string& s); - audio_flash_play = 16, - audio_general_play = 17, - - flash_programming_current_track = 18, - flash_programming_last_track_size = 19, - - tuxcore_symbolic_version = 20, - tuxaudio_symbolic_version = 21, - fuxusb_symbolic_version = 22, - fuxrf_symbolic_version = 23, - tuxrf_symbolic_version = 24, - driver_symbolic_version = 25, - - sound_reflash_begin = 26, - sound_reflash_end = 27, - sound_reflash_current_trac = 28, - + enum TuxAPI_LEVEL + { + CLIENT_LEVEL_ANONYME = -1, + CLIENT_LEVEL_FREE = 0, + CLIENT_LEVEL_RESTRICTED = 1, + CLIENT_LEVEL_ROOT = 2, + }; - left_wing_button = 34, - sound_flash_count = 35, - - osl_symbolic_version=38, - general_sound_state = 39, - wav_volume=40, - tts_volume=41, - tts_pitch=42, - tts_locutor=43, - wav_0_sound_state=44, - wav_0_pause_state=45, - wav_0_stop=46, - right_wing_button=47, - wav_1_sound_state=48, - wav_1_pause_state=49, - wav_1_stop=50, - wav_2_sound_state=51, - wav_2_pause_state=52, - wav_2_stop=53, - wav_3_sound_state=54, - wav_3_pause_state=55, - wav_3_stop=56, - tts_0_sound_state=57, - head_button=58, - tts_0_pause_state=59, - tts_0_stop=60, - tts_0_voice_loaded=61, - tts_0_speak_status=62, - tts_0_voice_list=63, - tts_wav_channel_start=64, - None=65, - remote_button=66,*/ -}; - -class TuxAPI -{ -private: - string doUrlAction(TuxAPI_LEVEL level, string url); - void doMotorAction(TuxAPI_LEVEL level, TuxAPI_ACTION action); - void DoRotorAction(TuxAPI_LEVEL level, TuxAPI_ACTION action, int rotation); - - void DoLedsAction(TuxAPI_LEVEL level, TuxAPI_ACTION action, TuxAPI_LEDS leds); - void DoLedsAction(TuxAPI_LEVEL level, TuxAPI_ACTION action, TuxAPI_LEDS leds, double intensity); - - void DoBlinkLedsAction(TuxAPI_LEVEL level, TuxAPI_LEDS leds, int count); - void DoBlinkLedsAction(TuxAPI_LEVEL level, TuxAPI_LEDS leds, int count, double delay); - - void DoSpeak(TuxAPI_LEVEL level, char *Text); - void DoSpeak(TuxAPI_LEVEL level, TuxAPI_SPEAK_LOCUTOR locutor, char *Text); - void DoSpeak(TuxAPI_LEVEL level, int pitch, char *Text); - void DoSpeak(TuxAPI_LEVEL level, TuxAPI_SPEAK_LOCUTOR locutor, int pitch, char *Text); - - void AttituneControl(TuxAPI_LEVEL level, TuxAPI_ACTION action, char *attitune); - - void WavControl(TuxAPI_LEVEL level, TuxAPI_ACTION action, char *sound); - - string getRawStatus(TuxAPI_LEVEL level, TuxAPI_STATUS_REQUESTED status); - -public: - TuxAPI(void); - void Flippers_Up(void); - void Flippers_Down(void); - void Mouth_Open(void); - void Mouth_Close(void); - void Eyes_Open(void); - void Eyes_Close(void); - void Rotation_Left(int rotation); - void Rotation_Right(int rotation); - void Leds_On(void); - void Leds_On(TuxAPI_LEDS leds); - void Leds_On(double intensity); - void Leds_On(TuxAPI_LEDS leds, double intensity); - void Leds_Off(void); - void Leds_Off(TuxAPI_LEDS leds); - - void Leds_Blink(void); - void Leds_Blink(TuxAPI_LEDS leds); - void Leds_Blink(TuxAPI_LEDS leds, int count); - void Leds_Blink(TuxAPI_LEDS leds, int count, double delay); - - void Speak(char *Text); - void Speak(TuxAPI_SPEAK_LOCUTOR locutor, char *Text); - void Speak(int pitch, char *Text); - void Speak(TuxAPI_SPEAK_LOCUTOR locutor, int pitch, char *Text); - - void PlayAttitune(char *attitune); - void StopAttitune(void); + /// <summary> + /// All action can do Tux + /// </summary> + enum TuxAPI_ACTION + { + FLIPPERS_UP = 1, + FLIPPERS_DOWN = 2, + + MOUTH_OPEN = 3, + MOUTH_CLOSE = 4, + + EYES_OPEN = 5, + EYES_CLOSE = 6, + + LEDS_ON = 7, + LEDS_OFF = 8, + + ROTATE_LEFT = 9, + ROTATE_RIGHT = 10, + + ATTITUNE_PLAY = 11, + ATTITUNE_STOP = 12, + + WAV_PLAY = 13, + WAV_STOP = 14, + }; + + /// <summary> + /// The TTS voice (TODO: Add others voices) + /// </summary> + enum TuxAPI_SPEAK_LOCUTOR + { + Bruno = 0, + Julie = 1, + }; + + /// <summary> + /// //<<LED_BOTH|LED_RIGHT|LED_LEFT>> + /// </summary> + enum TuxAPI_LEDS + { + LED_BOTH = 0, + LED_LEFT = 1, + LED_RIGHT = 2, + }; + + enum TuxAPI_STATUS_REQUESTED + { + flippers_motor_on = 0, + flippers_position = 1, + flippers_remaining_movements = 2, + + eyes_motor_on = 3, + eyes_position = 4, + eyes_remaining_movements = 5, + + mouth_motor_on = 6, + mouth_position = 7, + mouth_remaining_movements = 8, + + spin_left_motor_on = 9, + spin_right_motor_on = 10, + spinning_direction = 11, + spinning_remaining_movements = 12, + + light_level = 13, + right_led_state = 14, + left_led_state = 15, + + battery_level = 16, + battery_state = 17, + charger_state = 18, + + //----------- + + /* TODO: modify the number of any status + descriptor_complete = 4, + radio_state = 5, + dongle_plug = 6, + + + connection_quality = 15, - void PlayWav(char *sound); - void StopWav(void); - - string getStatus(TuxAPI_STATUS_REQUESTED status); + audio_flash_play = 16, + audio_general_play = 17, + + flash_programming_current_track = 18, + flash_programming_last_track_size = 19, + + tuxcore_symbolic_version = 20, + tuxaudio_symbolic_version = 21, + fuxusb_symbolic_version = 22, + fuxrf_symbolic_version = 23, + tuxrf_symbolic_version = 24, + driver_symbolic_version = 25, + + sound_reflash_begin = 26, + sound_reflash_end = 27, + sound_reflash_current_trac = 28, + - - - - - -}; + left_wing_button = 34, + sound_flash_count = 35, + + osl_symbolic_version=38, + general_sound_state = 39, + wav_volume=40, + tts_volume=41, + tts_pitch=42, + tts_locutor=43, + wav_0_sound_state=44, + wav_0_pause_state=45, + wav_0_stop=46, + right_wing_button=47, + wav_1_sound_state=48, + wav_1_pause_state=49, + wav_1_stop=50, + wav_2_sound_state=51, + wav_2_pause_state=52, + wav_2_stop=53, + wav_3_sound_state=54, + wav_3_pause_state=55, + wav_3_stop=56, + tts_0_sound_state=57, + head_button=58, + tts_0_pause_state=59, + tts_0_stop=60, + tts_0_voice_loaded=61, + tts_0_speak_status=62, + tts_0_voice_list=63, + tts_wav_channel_start=64, + None=65, + remote_button=66,*/ + }; + + class TuxAPI + { + private: + string doUrlAction(TuxAPI_LEVEL level, string url); + void doMotorAction(TuxAPI_LEVEL level, TuxAPI_ACTION action); + void DoRotorAction(TuxAPI_LEVEL level, TuxAPI_ACTION action, int rotation); + + void DoLedsAction(TuxAPI_LEVEL level, TuxAPI_ACTION action, TuxAPI_LEDS leds); + void DoLedsAction(TuxAPI_LEVEL level, TuxAPI_ACTION action, TuxAPI_LEDS leds, double intensity); + + void DoBlinkLedsAction(TuxAPI_LEVEL level, TuxAPI_LEDS leds, int count); + void DoBlinkLedsAction(TuxAPI_LEVEL level, TuxAPI_LEDS leds, int count, double delay); + + void DoSpeak(TuxAPI_LEVEL level, char *Text); + void DoSpeak(TuxAPI_LEVEL level, TuxAPI_SPEAK_LOCUTOR locutor, char *Text); + void DoSpeak(TuxAPI_LEVEL level, int pitch, char *Text); + void DoSpeak(TuxAPI_LEVEL level, TuxAPI_SPEAK_LOCUTOR locutor, int pitch, char *Text); + + void AttituneControl(TuxAPI_LEVEL level, TuxAPI_ACTION action, char *attitune); + + void WavControl(TuxAPI_LEVEL level, TuxAPI_ACTION action, char *sound); + + string getRawStatus(TuxAPI_LEVEL level, TuxAPI_STATUS_REQUESTED status); + + public: + TuxAPI(void); + void Flippers_Up(void); + void Flippers_Down(void); + void Mouth_Open(void); + void Mouth_Close(void); + void Eyes_Open(void); + void Eyes_Close(void); + void Rotation_Left(int rotation); + void Rotation_Right(int rotation); + void Leds_On(void); + void Leds_On(TuxAPI_LEDS leds); + void Leds_On(double intensity); + void Leds_On(TuxAPI_LEDS leds, double intensity); + void Leds_Off(void); + void Leds_Off(TuxAPI_LEDS leds); + + void Leds_Blink(void); + void Leds_Blink(TuxAPI_LEDS leds); + void Leds_Blink(TuxAPI_LEDS leds, int count); + void Leds_Blink(TuxAPI_LEDS leds, int count, double delay); + + void Speak(char *Text); + void Speak(TuxAPI_SPEAK_LOCUTOR locutor, char *Text); + void Speak(int pitch, char *Text); + void Speak(TuxAPI_SPEAK_LOCUTOR locutor, int pitch, char *Text); + + void PlayAttitune(char *attitune); + void StopAttitune(void); + + void PlayWav(char *sound); + void StopWav(void); + + string getStatus(TuxAPI_STATUS_REQUESTED status); + }; +} |