diff --git a/README.md b/README.md index 77207b6e48a8637cf10300e5002e1b55b00441f9..bfffaaafc82e9b92365a5cd4d52d8aa60560952b 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,17 @@ int psnClient.subscribe(char* topic, int length); // return ERROR-Wert: DN_ERROR_NO_ERROR, // DN_ERROR_TOPIC_LEN (Topic zu lang - wird abgeschnitten) +#Anzahl der aboonierten Topics ausgeben +int getMaxNrTopics(); +// return: Anzahl der abbonierten Topics + +#Bezeichnung eines abonnierten Topics ausgeben +int getSubscribedTopic(char*, int); +// param1: char-Array in das die Topic-Bezeichnung eingetragen wird +// param2: Nummer welches Topic ausgegeben werden soll (0 - getMaxNrTopics()) +// return ERROR-WERT: DN_ERROR_NO_ERROR, +// DN_ERROR_NO_TOPIC (Topic unter der angegebenen Nummer nicht verfügbar) + #Topic eines anderen Clients entfernen bool psnClient.unsubscribe(char* topic); // param: Topic String/char-Array @@ -222,6 +233,7 @@ DN_PUBLISH_SUCCESSULL 1 DN_ERROR_NO_ERROR 0 DN_ERROR_TOPIC_LEN -1 DN_ERROR_PAYLOAD_LEN -2 +DN_ERROR_NO_TOPIC -3 #Frame MSG_PRELIMITER '<' diff --git a/src/DidacticNet.cpp b/src/DidacticNet.cpp index a61796ce9761572ab2a616113aa0b4317953c4a6..361ab839dbadd3c73b0d91c79884ec550914a451 100644 --- a/src/DidacticNet.cpp +++ b/src/DidacticNet.cpp @@ -331,8 +331,11 @@ int DidacticPSNetClient::getFreeTopicNr() { } int DidacticPSNetClient::getSubscribedTopic(char* topic, int number){ - strcpy(topic, _topic[number]); - return 1; + if(number > 0 && number < getMaxNrTopics()){ + strcpy(topic, _topic[number]); + return DN_ERROR_NO_ERROR; + } + return DN_ERROR_NO_TOPIC; } int DidacticPSNetClient::getMaxNrTopics(){ diff --git a/src/DidacticNet.h b/src/DidacticNet.h index fe9321d6437090309426f7136fc1f16617c2f6d9..3480fe81241491c7548a2aa2e4f9c43c95488e80 100644 --- a/src/DidacticNet.h +++ b/src/DidacticNet.h @@ -49,6 +49,7 @@ #define DN_ERROR_NO_ERROR 0 #define DN_ERROR_TOPIC_LEN -1 #define DN_ERROR_PAYLOAD_LEN -2 +#define DN_ERROR_NO_TOPIC -3 //little helpers