#ifndef GSM_MANAGER_H #define GSM_MANAGER_H #include #include #include "pin_config.h" class GsmManager { public: GsmManager(HardwareSerial& serial); bool begin(); bool connect(const char* apn, const char* user = "", const char* pass = ""); void disconnect(); bool isConnected(); void powerOff(); void restart(); int getSignalQuality(); int getSignalPercent(); String getOperator(); String getIMEI(); String getICCID(); bool isSimInserted(); bool isModemAvailable() { return _modemReady; } TinyGsmClient& getClient() { return _gsmClient; } private: HardwareSerial& _serial; TinyGsm _modem; TinyGsmClient _gsmClient; bool _modemReady; void powerOnModem(); void powerOffModem(); bool waitForNetwork(uint32_t timeoutMs = 60000); }; #endif