INCLUDE "modedefs.bas"

DEFINE OSC 10 '10MHz crystal

' Set receive register to receiver enabled
DEFINE HSER_RCSTA 90h
' Set transmit register to transmitter enabled
DEFINE HSER_TXSTA 20h
' Set baud rate
DEFINE HSER_BAUD 9600
' Set SPBRG directly (normally set by HSER_BAUD)
DEFINE HSER_SPBRG 15

Clear

customer var byte
string var byte [32]'Text Data
pdu VAR BYTE [8] 'pdu data
tmp VAR BYTE [8] 'temporary array
b1 VAR BYTE [4]
x var byte [2]
finalpdu var byte [54]
recvnum var byte [12]
telnum var byte [12]
string1 var byte [8]
ch var byte

OPTION_REG = 0
TRISB = $0F

on Interrupt Goto myint ' Define interrupt handler
INTCON = $90 ' Enable INTE interrupt

loop:
Goto loop ' Infinite Loop


'''''''''''''' Interrupt handler'''''''''''''''''''''''


myint:

Disable ' No interrupts past this point

for x=0 to 9
LookUp X,["0011000B81"],b1
finalpdu(x)=b1
next x

; Taking in Recepient Number

telnum[1]=9
telnum[0]=4
telnum[3]=7
telnum[2]=7
telnum[5]=6
telnum[4]=0
telnum[7]=6
telnum[6]=9
telnum[9]=3
telnum[8]=1
telnum[11]=7
telnum[10]=$F

For X=0 TO 11
LookUp telnum(x),["0123456789"],b1
recvnum(x)=b1
Next X
recvnum(10)="F"

for x=10 to 21
finalpdu(x)=recvnum[x-10]
next x

for x=22 to 29
LookUp (X-22),["0000AA20"],b1
finalpdu(x)=b1
next x

;;;;;;;;;;;;;;;;;;;;;;Message;;;;;;;;;;;;;;;;;;;;; ;

;Taking in Customer

;;;;;;;;;;; Should be deleted ;;;;;;;;;;;;;;;;;;;;;

for x=0 to 16
lookup x,["aaaaaaaaaaaaaaaaa"],b1
customer(x)=b1
next x

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;

for x=0 to 16
lookup2 x,[customer],b1
string(x)=b1
next x

;Taking in String2
For X=0 TO 14
LookUp2 X,[",Reported Fault"],b1
string(x+17)=b1
Next X

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;

;HSerout [str string\32,13,10]
HSerout ["AT+CMGF=0",13,10] 'Set to PDU Mode
HSerout ["AT+CMGS=42",13,10] 'Set to PDU length
hserout [str finalpdu\30]

for x=0 to 7
string1(x)=string(x)
next x
Gosub txt2pdu

for x=0 to 7
string1(x)=string(x+8)
next x
;GoSub txt2pdu

for x=0 to 7
string1(x)=string(x+16)
next x
GoSub txt2pdu

for x=0 to 7
string1(x)=string(x+24)
next x
GoSub txt2pdu
HSerout [26]

INTCON.1 = 0 ' Clear interrupt flag
Resume ' Return to main program
Enable

;-----CONVERSION ROUTINES-------
;---TXT2PDU--(sms encoding)-----


TXT2PDU:
for x=1 to 7
tmp(x) = string1(x) << (8-x)
next x
ch(0)=string1(0)
pdu(0)=tmp(1) + ch(0)

for x=1 to 6
ch(x)=string1(x) >> x
pdu(x)=tmp(x+1) + ch(x)
next x

for x=0 to 6
hserout [hex2 pdu(x)]
next x

RETURN