diff --git a/Participant.cpp b/Participant.cpp index 53ee6d4..e423608 100644 --- a/Participant.cpp +++ b/Participant.cpp @@ -6,8 +6,6 @@ namespace RoboidControl { std::list Participant::participants; -Participant::Participant() {} - Participant::Participant(const char* ipAddress, int port) { // make a copy of the ip address string int addressLength = (int)strlen(ipAddress); diff --git a/Participant.h b/Participant.h index de9a66a..2facd6b 100644 --- a/Participant.h +++ b/Participant.h @@ -13,60 +13,56 @@ constexpr int MAX_THING_COUNT = 256; /// reference to remote participants. class Participant { public: - /// @brief The Ip Address of a participant. When the participant is local, - /// this contains 0.0.0.0 + /// @brief The Ip Address of a participant. const char* ipAddress = "0.0.0.0"; - /// @brief The port number for UDP communication with the participant. This is - /// 0 for isolated participants. + /// @brief The port number for UDP communication with the participant. unsigned int port = 0; - /// @brief The network Id to identify the participant. - /// @note This field is likely to disappear in future versions + /// @brief The network Id to identify the participant unsigned char networkId = 0; - /// @brief Default constructor - Participant(); /// @brief Create a new participant with the given communcation info /// @param ipAddress The IP address of the participant - /// @param port The port of the participant + /// @param port The UDP port of the participant Participant(const char* ipAddress, int port); /// @brief Destructor for the participant ~Participant(); - virtual void Update(unsigned long currentTimeMs = 0); - public: #if defined(NO_STD) unsigned char thingCount = 0; Thing* things[MAX_THING_COUNT]; #else - /// @brief The list of known participants - static std::list participants; - - /// @brief The list of things managed by this participant + /// @brief The things managed by this participant std::list things; #endif + /// @brief Find a thing managed by this participant + /// @param thingId The ID of the thing + /// @return The thing if found, nullptr when no thing has been found + Thing* Get(unsigned char thingId); + /// @brief Add a new thing for this participant. + /// @param thing The thing to add + /// @param checkId If true, the thing.id is regenerated if it is zero + void Add(Thing* thing, bool checkId = true); + /// @brief Remove a thing for this participant + /// @param thing The thing to remove + void Remove(Thing* thing); + + /// @brief Update all things for this participant + /// @param currentTimeMs The current time in milliseconds (optional) + virtual void Update(unsigned long currentTimeMs = 0); public: +#if defined(NO_STD) +#else + /// @brief The list of known participants + static std::list participants; +#endif static Participant* GetParticipant(const char* ipAddress, unsigned int port); static Participant* GetParticipant(unsigned char participantId); static Participant* AddParticipant(const char* ipAddress, unsigned int port); static void AddParticipant(Participant* participant); - /// @brief Find a thing managed by this participant - /// @param networkId The network ID for the thing - /// @param thingId The ID of the thing - /// @return The thing if found or nullptr when no thing has been found - /// @note The use of the network ID is likely to disappear in future versions. - Thing* Get(unsigned char thingId); - /// @brief Add a new thing for this participant. - /// @param thing The thing to add - /// @param checkId Checks the thing ID of the thing. If it is 0, a new thing - /// Id will be assigned. - void Add(Thing* thing, bool checkId = true); - /// @brief Remove a thing for this participant - /// @param thing The thing to remove - void Remove(Thing* thing); }; } // namespace RoboidControl