33
44#include " ModemInterface.h"
55
6+ /* *
7+ * @class ManagedTinyGsmClient
8+ * @brief A managed client for TinyGSM that automatically handles socket allocation and release.
9+ * This class allows you to create multiple clients without worrying about socket management.
10+ * It uses a static bit field to track used sockets and provides methods to lock and unlock the sockets.
11+ */
612class ManagedTinyGsmClient : public TinyGsmClient {
713private:
814 int socketId;
@@ -15,14 +21,62 @@ class ManagedTinyGsmClient : public TinyGsmClient {
1521 static void unlockSockets ();
1622
1723public:
24+ /* *
25+ * @brief Constructs a ManagedTinyGsmClient with the specified modem.
26+ * @param modem The TinyGsm modem to use.
27+ */
1828 ManagedTinyGsmClient (TinyGsm& modem);
29+
30+ /* *
31+ * Copy constructor for ManagedTinyGsmClient.
32+ * This constructor allocates a new socket for the copied client.
33+ * @param other The other ManagedTinyGsmClient to copy from.
34+ * Note: If the other client is invalid, this will also create an invalid client.
35+ * The socketId will be -1.
36+ */
1937 ManagedTinyGsmClient (const ManagedTinyGsmClient& other);
38+
39+ /* *
40+ * Assignment operator for ManagedTinyGsmClient.
41+ * @param other The other ManagedTinyGsmClient to copy from.
42+ * @return A reference to this ManagedTinyGsmClient.
43+ */
2044 ManagedTinyGsmClient& operator =(const ManagedTinyGsmClient& other);
45+
46+ /* *
47+ * Move constructor for ManagedTinyGsmClient.
48+ * @param other The other ManagedTinyGsmClient to move from.
49+ */
2150 ManagedTinyGsmClient (ManagedTinyGsmClient&& other);
51+
52+ /* *
53+ * Move assignment operator for ManagedTinyGsmClient.
54+ * This operator transfers ownership of the socket from the other client to this one.
55+ * @param other The other ManagedTinyGsmClient to move from.
56+ * @return A reference to this ManagedTinyGsmClient.
57+ */
2258 ManagedTinyGsmClient& operator =(ManagedTinyGsmClient&& other);
59+
60+ /* *
61+ * Destructor for ManagedTinyGsmClient.
62+ * Releases the socket if it is valid.
63+ */
2364 ~ManagedTinyGsmClient ();
2465
66+ /* *
67+ * Get the socket ID for this client.
68+ * The maximum number of sockets is defined by TINY_GSM_MUX_COUNT.
69+ * If the client is invalid, the socketId will be -1.
70+ * @return The socket ID (0 - (TINY_GSM_MUX_COUNT - 1) or -1 if invalid).
71+ */
2572 int getSocketId () const { return socketId; }
73+
74+ /* *
75+ * Check if the client is valid.
76+ * A client is valid if it has a socket ID >= 0.
77+ * This is useful to check if the client can be used for network operations.
78+ * @return True if the client is valid, false otherwise.
79+ */
2680 bool isValid () const { return socketId >= 0 ; }
2781};
2882
0 commit comments