Skip to content

Commit

Permalink
Issue ElexParts#1: Get temperature data from DHT11 temperature and hu…
Browse files Browse the repository at this point in the history
…midity sensor.
  • Loading branch information
dasigr committed Feb 16, 2019
1 parent 3bd17e1 commit d41eb24
Show file tree
Hide file tree
Showing 38 changed files with 7,228 additions and 4 deletions.
739 changes: 739 additions & 0 deletions lib/ITEADLIB_Arduino_SIMCom/GSM.cpp

Large diffs are not rendered by default.

271 changes: 271 additions & 0 deletions lib/ITEADLIB_Arduino_SIMCom/GSM.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,271 @@
#ifndef GSM_H
#define GSM_H

#define UNO
//#define MEGA

#include <SoftwareSerial.h>
#include <inttypes.h>
#include "WideTextFinder.h"


#define ctrlz 26 //Ascii character for ctr+z. End of a SMS.
#define cr 13 //Ascii character for carriage return.
#define lf 10 //Ascii character for line feed.
#define ctrlz 26 //Ascii character for ctr+z. End of a SMS.
#define cr 13 //Ascii character for carriage return.
#define lf 10 //Ascii character for line feed.
#define GSM_LIB_VERSION 308 // library version X.YY (e.g. 1.00)

#define DEBUG_ON


#ifdef MEGA
#include "HWSerial.h"
#endif

// if defined - debug print is enabled with possibility to print out
// debug texts to the terminal program
//#define DEBUG_PRINT

// if defined - debug print is enabled with possibility to print out
// the data recived from gsm module
//#define DEBUG_GSMRX

// if defined - debug LED is enabled, otherwise debug LED is disabled
//#define DEBUG_LED_ENABLED

// if defined - SMSs are not send(are finished by the character 0x1b
// which causes that SMS are not send)
// by this way it is possible to develop program without paying for the SMSs
//#define DEBUG_SMS_ENABLED


// pins definition
#define GSM_ON 8 // connect GSM Module turn ON to pin 77
#define GSM_RESET 9 // connect GSM Module RESET to pin 35
//#define DTMF_OUTPUT_ENABLE 71 // connect DTMF Output Enable not used
#define DTMF_DATA_VALID 14 // connect DTMF Data Valid to pin 14
#define DTMF_DATA0 72 // connect DTMF Data0 to pin 72
#define DTMF_DATA1 73 // connect DTMF Data1 to pin 73
#define DTMF_DATA2 74 // connect DTMF Data2 to pin 74
#define DTMF_DATA3 75 // connect DTMF Data3 to pin 75

// length for the internal communication buffer
#define COMM_BUF_LEN 200

// some constants for the IsRxFinished() method
#define RX_NOT_STARTED 0
#define RX_ALREADY_STARTED 1

// some constants for the InitParam() method
#define PARAM_SET_0 0
#define PARAM_SET_1 1

// DTMF signal is NOT valid
//#define DTMF_NOT_VALID 0x10


// status bits definition
#define STATUS_NONE 0
#define STATUS_INITIALIZED 1
#define STATUS_REGISTERED 2
#define STATUS_USER_BUTTON_ENABLE 4

// GPRS status
#define CHECK_AND_OPEN 0
#define CLOSE_AND_REOPEN 1

// Common string used
#define str_ok "OK" //string to reduce stack usage
#define str_at "AT" //string to reduce stack usage

// SMS type
// use by method IsSMSPresent()
enum sms_type_enum {
SMS_UNREAD,
SMS_READ,
SMS_ALL,

SMS_LAST_ITEM
};

enum comm_line_status_enum {
// CLS like CommunicationLineStatus
CLS_FREE, // line is free - not used by the communication and can be used
CLS_ATCMD, // line is used by AT commands, includes also time for response
CLS_DATA, // for the future - line is used in the CSD or GPRS communication
CLS_LAST_ITEM
};

enum rx_state_enum {
RX_NOT_FINISHED = 0, // not finished yet
RX_FINISHED, // finished, some character was received
RX_FINISHED_STR_RECV, // finished and expected string received
RX_FINISHED_STR_NOT_RECV, // finished, but expected string not received
RX_TMOUT_ERR, // finished, no character received
// initial communication tmout occurred
RX_LAST_ITEM
};


enum at_resp_enum {
AT_RESP_ERR_NO_RESP = -1, // nothing received
AT_RESP_ERR_DIF_RESP = 0, // response_string is different from the response
AT_RESP_OK = 1, // response_string was included in the response

AT_RESP_LAST_ITEM
};

enum registration_ret_val_enum {
REG_NOT_REGISTERED = 0,
REG_REGISTERED,
REG_NO_RESPONSE,
REG_COMM_LINE_BUSY,

REG_LAST_ITEM
};

enum call_ret_val_enum {
CALL_NONE = 0,
CALL_INCOM_VOICE,
CALL_ACTIVE_VOICE,
CALL_INCOM_VOICE_AUTH,
CALL_INCOM_VOICE_NOT_AUTH,
CALL_INCOM_DATA_AUTH,
CALL_INCOM_DATA_NOT_AUTH,
CALL_ACTIVE_DATA,
CALL_OTHERS,
CALL_NO_RESPONSE,
CALL_COMM_LINE_BUSY,

CALL_LAST_ITEM
};


enum getsms_ret_val_enum {
GETSMS_NO_SMS = 0,
GETSMS_UNREAD_SMS,
GETSMS_READ_SMS,
GETSMS_OTHER_SMS,

GETSMS_NOT_AUTH_SMS,
GETSMS_AUTH_SMS,

GETSMS_LAST_ITEM
};


class GSM {
public:
enum GSM_st_e { ERROR, IDLE, READY, ATTACHED, TCPSERVERWAIT, TCPCONNECTEDSERVER, TCPCONNECTEDCLIENT };
byte comm_buf[COMM_BUF_LEN+1]; // communication buffer +1 for 0x00 termination
void InitParam (byte group);

private:
int _status;
byte comm_line_status;

// global status - bits are used for representation of states
byte module_status;

// variables connected with communication buffer

byte *p_comm_buf; // pointer to the communication buffer
byte comm_buf_len; // num. of characters in the buffer
byte rx_state; // internal state of rx state machine
uint16_t start_reception_tmout; // max tmout for starting reception
uint16_t interchar_tmout; // previous time in msec.
unsigned long prev_time; // previous time in msec.

// last value of speaker volume
byte last_speaker_volume;
char InitSMSMemory(void);

protected:
#ifdef MEGA
HWSerial _cell;
#endif
#ifdef UNO
SoftwareSerial _cell;
#endif
int isIP(const char* cadena);

public:
#ifdef UNO
WideTextFinder _tf;
#endif
inline void setStatus(GSM_st_e status) {
_status = status;
}
GSM();
inline int getStatus() {
return _status;
};
virtual int begin(long baud_rate);
inline void SetCommLineStatus(byte new_status) {
comm_line_status = new_status;
};
inline byte GetCommLineStatus(void) {
return comm_line_status;
};
void RxInit(uint16_t start_comm_tmout, uint16_t max_interchar_tmout);
byte IsRxFinished(void);
byte IsStringReceived(char const *compare_string);
byte WaitResp(uint16_t start_comm_tmout, uint16_t max_interchar_tmout);
byte WaitResp(uint16_t start_comm_tmout, uint16_t max_interchar_tmout,
char const *expected_resp_string);
char SendATCmdWaitResp(char const *AT_cmd_string,
uint16_t start_comm_tmout, uint16_t max_interchar_tmout,
char const *response_string,
byte no_of_attempts);
char SendATCmdWaitResp(const __FlashStringHelper *AT_cmd_string,
uint16_t start_comm_tmout, uint16_t max_interchar_tmout,
char const *response_string,
byte no_of_attempts);
void Echo(byte state);


//-----------------------
// turns off/on the speaker
void SetSpeaker(byte off_on);
// checks if module is registered in the GSM network
// must be called regularly
byte CheckRegistration(void);

// User button methods
inline byte IsUserButtonEnable(void) {
return (module_status & STATUS_USER_BUTTON_ENABLE);
};
inline void DisableUserButton(void) {
module_status &= ~STATUS_USER_BUTTON_ENABLE;
};
inline void EnableUserButton(void) {
module_status |= STATUS_USER_BUTTON_ENABLE;
};
byte IsUserButtonPushed(void);

// Phonebook's methods
char GetPhoneNumber(byte position, char *phone_number);
char WritePhoneNumber(byte position, char *phone_number);
char DelPhoneNumber(byte position);
char ComparePhoneNumber(byte position, char *phone_number);

// returns registration state
byte IsRegistered(void);
// returns whether complete initialization was made
byte IsInitialized(void);
//-----------------------

// debug methods
#ifdef DEBUG_LED_ENABLED
void BlinkDebugLED (byte num_of_blink);
#endif

#ifdef DEBUG_PRINT
void DebugPrint(const char *string_to_print, byte last_debug_print);
void DebugPrint(int number_to_print, byte last_debug_print);
#endif
};

#endif
Loading

0 comments on commit d41eb24

Please sign in to comment.