Thread: [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 *Te... [truncated message content] |