-
-static GSM_Error GetSMSMessage(GSM_Data *data, GSM_Statemachine *state)
-{
- unsigned char req[] = { FBUS_FRAME_HEADER, 0x07, 0x02 /* Unknown */, 0x00 /* Location */, 0x01, 0x64};
-
- req[5] = data->SMSMessage->Number;
-
- if (SM_SendMessage(state, 8, 0x02, req) != GE_NONE) return GE_NOTREADY;
- return SM_Block(state, data, 0x14);
-}
-
-static GSM_Error IncomingSMS(int messagetype, unsigned char *message, int length, GSM_Data *data)
-{
- int i;
-
- switch (message[3]) {
- /* save sms succeeded */
- case 0x05:
- dprintf("Message stored at %d\n", message[5]);
- break;
- /* save sms failed */
- case 0x06:
- dprintf("SMS saving failed:\n");
- switch (message[4]) {
- case 0x02:
- dprintf("\tAll locations busy.\n");
- return GE_MEMORYFULL;
- case 0x03:
- dprintf("\tInvalid location!\n");
- return GE_INVALIDSMSLOCATION;
- default:
- dprintf("\tUnknown reason.\n");
- return GE_UNKNOWN;
- }
- /* read sms */
- case 0x08:
- for (i = 0; i < length; i ++)
- if (isprint(message[i]))
- dprintf("[%02x%c]", message[i], message[i]);
- else
- dprintf("[%02x ]", message[i]);
- dprintf("\n");
-
- memset(data->SMSMessage, 0, sizeof(GSM_SMSMessage));
-
- /* Short Message status */
- DecodePDUSMS(message, data->SMSMessage, length);
-
- break;
- /* read sms failed */
- case 0x09:
- dprintf("SMS reading failed:\n");
- switch (message[4]) {
- case 0x02:
- dprintf("\tInvalid location!\n");
- return GE_INVALIDSMSLOCATION;
- case 0x07:
- dprintf("\tEmpty SMS location.\n");
- return GE_EMPTYSMSLOCATION;
- default:
- dprintf("\tUnknown reason.\n");
- return GE_UNKNOWN;
- }
- /* delete sms succeeded */
- case 0x0b:
- dprintf("Message: SMS deleted successfully.\n");
- break;
- /* sms status succeded */
- case 0x37:
- dprintf("Message: SMS Status Received\n");
- dprintf("\tThe number of messages: %d\n", message[10]);
- dprintf("\tUnread messages: %d\n", message[11]);
- data->SMSStatus->Unread = message[11];
- data->SMSStatus->Number = message[10];
- break;
- /* sms status failed */
- case 0x38:
- dprintf("Message: SMS Status error, probably not authorized by PIN\n");
- return GE_INTERNALERROR;
- /* unknown */
- default:
- dprintf("Unknown message.\n");
- return GE_UNKNOWN;
- }
- return GE_NONE;
-}