|
|
@@ -8,13 +8,22 @@
|
|
|
#include "mp3stream.h"
|
|
|
#include "rtc.h"
|
|
|
#include "alarm.h"
|
|
|
+#include "displayHandler.h"
|
|
|
#include "vs10xx.h"
|
|
|
+#include "twitch.h"
|
|
|
+#include "Twitter.h"
|
|
|
+int streamid;
|
|
|
|
|
|
void parseAlarmJson(char* content){
|
|
|
int r;
|
|
|
- int i;
|
|
|
+ int i = 2;
|
|
|
+
|
|
|
+ int startidx = 0;
|
|
|
+ int charAmount = 0;
|
|
|
+
|
|
|
int usedAlarms[maxAlarms()];
|
|
|
int j;
|
|
|
+
|
|
|
jsmn_parser p;
|
|
|
jsmntok_t token[160]; /* We expect no more than 128 tokens */
|
|
|
|
|
|
@@ -39,6 +48,7 @@ void parseAlarmJson(char* content){
|
|
|
char url[24];
|
|
|
char ip[24];
|
|
|
char name[16];
|
|
|
+ char str2[16];
|
|
|
char st = -1;
|
|
|
char oo = -1;
|
|
|
memset(url, 0, 24);
|
|
|
@@ -63,16 +73,15 @@ void parseAlarmJson(char* content){
|
|
|
}else if (jsoneq(content, &token[i], "port") == 0) {
|
|
|
port = getIntegerToken(content, &token[i + 1]);
|
|
|
}else if (jsoneq(content, &token[i], "ip") == 0) {
|
|
|
- getStringToken(content, &token[i + 1], ip);
|
|
|
+ getStringToken(content, &token[i + 1], ip, 24);
|
|
|
}else if (jsoneq(content, &token[i], "url") == 0) {
|
|
|
- getStringToken(content, &token[i + 1], url);
|
|
|
+ getStringToken(content, &token[i + 1], url, 24);
|
|
|
}else if (jsoneq(content, &token[i], "name") == 0) {
|
|
|
- getStringToken(content, &token[i + 1], name);
|
|
|
+ getStringToken(content, &token[i + 1], name, 16);
|
|
|
}else if (jsoneq(content, &token[i], "oo") == 0) {
|
|
|
oo = getIntegerToken(content, &token[i + 1]);
|
|
|
}else if (jsoneq(content, &token[i], "st") == 0) {
|
|
|
st = getIntegerToken(content, &token[i + 1]);
|
|
|
- i+=2;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -83,11 +92,39 @@ void parseAlarmJson(char* content){
|
|
|
printf("Alarm date is: %02d.%02d.%02d\n", time.tm_mday, (time.tm_mon + 1), (time.tm_year + 1900));
|
|
|
printf("Alarm stream data is: %s:%d%s\n", ip, port, url);
|
|
|
printf("Alarm id and name and st is: %d %s %d\n\n", id, name, st);
|
|
|
+
|
|
|
+ charAmount = 0;
|
|
|
+ for (i = 0; i < 16;i++){
|
|
|
+ if (name[i] != 0){
|
|
|
+ charAmount = charAmount + 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ startidx = (8-(charAmount/2));
|
|
|
+
|
|
|
+ charAmount = 0;
|
|
|
+ for(i = 0; i < 16; i++){
|
|
|
+ if (i >= startidx){
|
|
|
+ if (name[charAmount] != 0){
|
|
|
+ str2[i] = name[charAmount];
|
|
|
+ } else {
|
|
|
+ str2[i] = ' ';
|
|
|
+ }
|
|
|
+ charAmount++;
|
|
|
+ } else {
|
|
|
+ str2[i] = ' ';
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
//zoek naar een vrije plaats in de alarm array
|
|
|
for(j = 0; j < maxAlarms(); j++){
|
|
|
if(usedAlarms[j] == 0){ //Dit is een lege plaats, hier kunnen we ons nieuwe alarm plaatsen
|
|
|
- setAlarm(time, name, ip, port, url, st, id, j);
|
|
|
+ if (oo == 1){
|
|
|
+ eenmaligAlarm(time,str2,ip,port,url,st,id,j);
|
|
|
+ } else {
|
|
|
+ setAlarm(time, str2, ip, port, url, st, id, j);
|
|
|
+ }
|
|
|
usedAlarms[j] = 1;
|
|
|
j = 10; //Uit de for loop
|
|
|
}
|
|
|
@@ -133,8 +170,8 @@ void parseCommandQue(char* content){
|
|
|
u_short port = getIntegerToken(content, &token[i + 9]);
|
|
|
char url[24];
|
|
|
char ip[24];
|
|
|
- getStringToken(content, &token[i + 7], url);
|
|
|
- getStringToken(content, &token[i + 5], ip);
|
|
|
+ getStringToken(content, &token[i + 7], url, 24);
|
|
|
+ getStringToken(content, &token[i + 5], ip, 24);
|
|
|
bool success = connectToStream(ip, port, url);
|
|
|
if (success == true){
|
|
|
play();
|
|
|
@@ -149,6 +186,71 @@ void parseCommandQue(char* content){
|
|
|
|
|
|
void parsetimezone(char* content)
|
|
|
{
|
|
|
- int timezone = atoi(content);
|
|
|
+ int timezone = atoi(content); //parsing string to int (only works when everything is int)
|
|
|
setTimeZone(timezone);
|
|
|
}
|
|
|
+
|
|
|
+void parseTwitch(char* content) {
|
|
|
+ if (!strcmp("null", content)) {
|
|
|
+ printf("Nobody is streaming");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ int r;
|
|
|
+ int i;
|
|
|
+ jsmn_parser p;
|
|
|
+ jsmntok_t token[20]; /* We expect no more than 20 tokens */
|
|
|
+
|
|
|
+ jsmn_init(&p);
|
|
|
+ r = jsmn_parse(&p, content, strlen(content), token, sizeof(token) / sizeof(token[0]));
|
|
|
+ if (r <= 0) {
|
|
|
+ printf("Failed to parse JSON: %d \n", r);
|
|
|
+ return;
|
|
|
+ } else {
|
|
|
+ printf("Aantal tokens found: %d \n", r);
|
|
|
+ }
|
|
|
+
|
|
|
+ char name[20];
|
|
|
+ char title[20];
|
|
|
+ char game[20];
|
|
|
+ int date;
|
|
|
+ memset(name, 0, 20);
|
|
|
+ memset(title, 0, 20);
|
|
|
+ memset(game, 0, 20);
|
|
|
+
|
|
|
+ for (i = 1; i < r; i++) {
|
|
|
+ if (jsoneq(content, &token[i], "Name") == 0) {
|
|
|
+ getStringToken(content, &token[i + 1], name, 20);
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ else if (jsoneq(content, &token[i], "Title") == 0) {
|
|
|
+ getStringToken(content, &token[i + 1], title, 20);
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ else if (jsoneq(content, &token[i], "Game") == 0) {
|
|
|
+ getStringToken(content, &token[i + 1], game, 20);
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ else if (jsoneq(content, &token[i], "Date") == 0) {
|
|
|
+ date = getIntegerToken(content, &token[i + 1]);
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ printf("%d", date);
|
|
|
+ if(streamid != date)
|
|
|
+ {
|
|
|
+ strcpy(data.title, title);
|
|
|
+ strcpy(data.game, game);
|
|
|
+ strcpy(data.name, name);
|
|
|
+ printf("%s - %s - %s", name, title, game);
|
|
|
+ streamid = date;
|
|
|
+ setCurrentDisplay(DISPLAY_Twitch, 100);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void TwitterParser(char* content)
|
|
|
+{
|
|
|
+ char tweet[140];
|
|
|
+ memset(tweet, 0, 140);
|
|
|
+ strcpy(TweetFeed.tweet,content);
|
|
|
+ printf("%s", TweetFeed.tweet);
|
|
|
+}
|