#include <avr/io.h>
#include <string.h>
#include <stdlib.h>
#include <util/delay.h>
Datenstrukturen | |
struct | DATE_T |
Struktur mit Datums- und Zeitangaben einer empfangenen Textnachricht. Mehr ... | |
struct | SMS_DECODE_DATA_T |
Struktur zum speichern der decodierten Daten aus einer empfangenen Textnachricht. Mehr ... | |
struct | SMS_CMD_LIST_S |
Struktur zum Zuordnen eines empfangenen Kommandos zu einer Funktion (die konkrete Zuordnung erfolgt über sms_cmd_list in sms.c). Mehr ... | |
struct | SMS_TELNR_LIST_S |
Struktur zum Verwalten von Telefonnummern, welche zur Anrufererkennung dienen (die konkrete Zuordnung erfolgt über sms_telnr_list in sms.c bzw. sms_init). Mehr ... | |
Makrodefinitionen | |
#define | SMS_TELNR "01623456789" |
#define | SMS_TELNR_LIST_MAX 5 |
#define | SMS_TELNR_MAX_LEN 15 |
#define | SMS_MESSAGE_MAX_LEN 160 |
#define | SMS_DELIMITER ",;: " |
Typdefinitionen | |
typedef struct SMS_CMD_LIST_S | SMS_CMD_LIST_T |
Struktur zum Zuordnen eines empfangenen Kommandos zu einer Funktion (die konkrete Zuordnung erfolgt über sms_cmd_list in sms.c). | |
typedef struct SMS_TELNR_LIST_S | SMS_TELNR_LIST_T |
Struktur zum Verwalten von Telefonnummern, welche zur Anrufererkennung dienen (die konkrete Zuordnung erfolgt über sms_telnr_list in sms.c bzw. sms_init). | |
Aufzählungen | |
enum | SMS_MSG { SMS_OK, SMS_ERROR, SMS_MSG_DECODE, SMS_INCOMING_RING, SMS_CANCEL_RING, SMS_REQUEST_TELNR, SMS_RETRIEVE_TELNR, SMS_RETRIEVE_nTELNR, SMS_IDLE } |
Funktionen | |
uint8_t | str2int (char data) |
void | sms_init (void) |
void | sms_time (unsigned char *year, unsigned char *month, unsigned char *day, unsigned char *hour, unsigned char *minute, unsigned char *secound) |
void | sms_send (char *zielnr, char *nachricht) |
void | sms_display_text (char *nachricht) |
void | sms_decode (char *pdu, SMS_DECODE_DATA_T *data) |
uint8_t | sms_check_nr (char *telnr_in) |
SMS_MSG | sms_state_machine (void) |
uint8_t | sms_cmdset (uint8_t dat) |
Variablen | |
SMS_TELNR_LIST_T | sms_telnr_list [SMS_TELNR_LIST_MAX] |
char | sms_last_caller [SMS_TELNR_MAX_LEN+1] |
volatile SMS_DECODE_DATA_T | sms_dec_data |
#define SMS_TELNR "01623456789" |
Adressat, an welche SMS geschickt werden soll (immer führende 0 mitschreiben, NICHT +49)
Dient zudem zur Anrufererkennung neben SMS_TELNR_LIST_T.
#define SMS_TELNR_LIST_MAX 5 |
definiert die maximale Anzahl der Telefonnummern in der Telefonnummernliste
Dies kann zur Anrufernummernerkennung genutzt werden.Dabei werden immer die ersten SMS_TELNR_LIST_MAX Nummern der SIM-Karte verwendet (siehe sms_init)
#define SMS_TELNR_MAX_LEN 15 |
definiert die maximale Länge einer Telefonnummer
#define SMS_MESSAGE_MAX_LEN 160 |
definiert die maximale Länge einer Textnachricht
#define SMS_DELIMITER ",;: " |
Trennzeichen um Befehle aus empfangenen Textnachrichten zu selektieren
typedef struct SMS_CMD_LIST_S SMS_CMD_LIST_T |
Struktur zum Zuordnen eines empfangenen Kommandos zu einer Funktion (die konkrete Zuordnung erfolgt über sms_cmd_list in sms.c).
typedef struct SMS_TELNR_LIST_S SMS_TELNR_LIST_T |
Struktur zum Verwalten von Telefonnummern, welche zur Anrufererkennung dienen (die konkrete Zuordnung erfolgt über sms_telnr_list in sms.c bzw. sms_init).
enum SMS_MSG |
zusammengefasste Auflistung als Rückgabewert der State Machine (sms_state_machine)
SMS_OK | OK von Mobiltelefon empfangen |
SMS_ERROR | ERROR von Mobiltelefon empgangen |
SMS_MSG_DECODE | Textnachricht eingegangen, decodiert und in SMS_DECODE_DATA_T Struktur gespeichert |
SMS_INCOMING_RING | eingehender Anruf |
SMS_CANCEL_RING | eingehender Anruf wurde abgewiesen |
SMS_REQUEST_TELNR | Telefonnummer des eingehenden Anruft wurde abgefragt |
SMS_RETRIEVE_TELNR | Anrufer wurde abgewiesen, Telefonnummer ermittelt und korrekt mit SMS_TELNR bzw. SMS_TELNR_LIST_T verglichen - über sms_last_caller kann jetzt der Anrufer identifiziert werden |
SMS_RETRIEVE_nTELNR | Anrufer wurde abgewiesen, Telefonnummer ermittelt und nicht korrekt mit SMS_TELNR bzw. SMS_TELNR_LIST_T verglichen - über sms_last_caller kann jetzt der Anrufer identifiziert werden |
SMS_IDLE | empfangene Zeichenkette wurde nicht in sms_state_machine "gefunden" (kein Eintrag) |
uint8_t str2int | ( | char | data | ) |
Wandelt ein Zeichen in eine Hexzahl um
data | Zeichen, welches umgewandelt werden soll |
void sms_init | ( | void | ) |
Initialisiert die serielle Schnittstelle und öffnet einen Kanal für Standard Ein-/Ausgabe (printf, gets, scanf,...)
void sms_time | ( | unsigned char * | year, | |
unsigned char * | month, | |||
unsigned char * | day, | |||
unsigned char * | hour, | |||
unsigned char * | minute, | |||
unsigned char * | second | |||
) |
Ließt Datum und Zeit aus dem Mobiltelefon aus
year | Pointer auf Speicherstelle für Jahreszahl | |
month | Pointer auf Speicherstelle für Monat | |
day | Pointer auf Speicherstelle für Tag | |
hour | Pointer auf Speicherstelle für Stunde | |
minute | Pointer auf Speicherstelle für Minute | |
second | Pointer auf Speicherstelle für Sekunde |
void sms_send | ( | char * | zielnr, | |
char * | nachricht | |||
) |
Sendet eine SMS mit dem Inhalt "nachricht" an "zielnr"
zielnr | Pointer auf Zielnummer der SMS | |
nachricht | Pointer auf Nachricht der SMS an Zielnummer |
void sms_display_text | ( | char * | nachricht | ) |
Stellt eine Textnachricht auf dem Mobiltelefon-Display dar
nachricht | Pointer auf darzustellende Nachricht auf dem Mobiltelefon-Display |
void sms_decode | ( | char * | pdu, | |
SMS_DECODE_DATA_T * | data | |||
) |
Decodiert eine SMS im PDU Format
pdu | Pointer aud den komplette PDU-String (angefangen mit Länge des Headers, SMSC Nr, etc) | |
data | Pointer auf Struktur vom Typ SMS_DECODE_DATA_TYPE (in sms.h definiert) zum speichern der decodierten Daten (Nachricht in Klartext, Telefonnummer, Datum, Zeit) |
uint8_t sms_check_nr | ( | char * | telnr_in | ) |
Sucht nach Übereinstimmungen der übergebenen Telefonnummer in den gespeicherten Listen (sms_telnr_list oder SMS_TELNR)
telnr_in | Vergleichsnummer zum Überprüfen |
SMS_MSG sms_state_machine | ( | void | ) |
State Machine zum auswerten der eingegangenen Daten vom Mobiltelefon
uint8_t sms_cmdset | ( | uint8_t | dat | ) |
SMS_TELNR_LIST_T sms_telnr_list[SMS_TELNR_LIST_MAX] |
anlegen der Struktur zum speichern der Telefonnummernliste zur Anrufererkennung in sms_state_machine (Definition siehe sms.h)
Das Auffüllen des Arrays erfolgt in sms_init.
char sms_last_caller[SMS_TELNR_MAX_LEN+1] |
globale Variable mit Telefonnummer des letzten Anrufers
volatile SMS_DECODE_DATA_T sms_dec_data |
anlegen der Struktur zum speichern der decodierten Daten der PDU Zeichenkette (Definition siehe sms.h)