3
3
4
4
#include " ModemInterface.h"
5
5
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
+ */
6
12
class ManagedTinyGsmClient : public TinyGsmClient {
7
13
private:
8
14
int socketId;
@@ -15,14 +21,62 @@ class ManagedTinyGsmClient : public TinyGsmClient {
15
21
static void unlockSockets ();
16
22
17
23
public:
24
+ /* *
25
+ * @brief Constructs a ManagedTinyGsmClient with the specified modem.
26
+ * @param modem The TinyGsm modem to use.
27
+ */
18
28
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
+ */
19
37
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
+ */
20
44
ManagedTinyGsmClient& operator =(const ManagedTinyGsmClient& other);
45
+
46
+ /* *
47
+ * Move constructor for ManagedTinyGsmClient.
48
+ * @param other The other ManagedTinyGsmClient to move from.
49
+ */
21
50
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
+ */
22
58
ManagedTinyGsmClient& operator =(ManagedTinyGsmClient&& other);
59
+
60
+ /* *
61
+ * Destructor for ManagedTinyGsmClient.
62
+ * Releases the socket if it is valid.
63
+ */
23
64
~ManagedTinyGsmClient ();
24
65
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
+ */
25
72
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
+ */
26
80
bool isValid () const { return socketId >= 0 ; }
27
81
};
28
82
0 commit comments