Voice Call Progress Monitoring

  • Q: Type of module? A: GL865-Dual
    Q: Firmware version? A: 10.00.155
    Q: Type of starter kit you have? none
    (S1, S1B, S2, S3, S4, EVK1, EVK2, none, other)


    I am trying to monitor the progress of a voice call made from the internal phonebook. I have followed the other threads about this and believe I have implemented the code that is suggested to get back the unsolicited status messages.


    However, I only seem to get 'Dialing', 'Ringing' and 'No Carrier'.


    I am using RSTerm to control the modem and everything else seems to work OK.
    When I issue ATDS=0 (slot 0 has a valid phone number) the target phone rings.
    If I answer the phone it sometime just cuts off but mostly the voice connection is made. I just don't get a report on RSTerm of 'Active'. There is no indication at all until I break the call.


    Below is my initialisation code and I would appreciate advice on what I must have missed or set in error.


    Thanks


    Peter


    ############################################


    def GL865_initialise():
    #Set system parameters
    s1print ('SelInt',1)
    res = MDM.send('AT#SELINT=2\r', 0) #select mode
    res = MDM.receive(50)
    s1print ('Local echo Off',1)
    res = MDM.send('ATE0\r', 10) #Turn off local echo of commands
    res = MDM.receive(50)
    s1print ('StartMode',1)
    res = MDM.send('AT#STARTMODESCR=2\r', 0) #Set for next time we boot: Don't wait for 10secs of no AT commands before booting.
    res = MDM.receive(50)
    s1print ('SLED',1)
    res = MDM.send('AT#SLED=2\r', 0) #Stat LED config
    res = MDM.receive(50)
    s1print ('CMGF',1)
    res = MDM.send('AT+CMGF=1\r', 0) #select the text mode
    res = MDM.receive(50)
    s1print ('CNMI',1)
    res = MDM.send('AT+CNMI=2,1,2,1,0\r', 10) #Select New Messages indication behaviour
    res = MDM.receive(50)
    s1print ('CSMP',1)
    res = MDM.send('AT+CSMP=49,167,0,0\r', 10) #Set Text Mode Parameters
    res = MDM.receive(50)
    s1print ('CPMS',1)
    res = MDM.send('AT+CPMS=SM,SM,SM\r', 10) #Select SMS Memory and check for memory space
    res = MDM.receive(50)
    s1print ('AutoBND',1)
    res = MDM.send('AT#AUTOBND=2\r', 10) #Automatic band selection
    res = MDM.receive(50)
    s1print ('COPS',1)
    res = MDM.send('AT+COPS=0,2,00000\r', 10) #Automatic network selection
    res = MDM.receive(50)
    #Set SIM for enhanced speed
    s1print ('EnhSIM',1)
    res = MDM.send('AT#ENHSIM=1\r', 10) #activates(1) or deactivates(0) the SIM Enhanced Speed Functionality
    res = MDM.receive(50)
    s1print ('MWI',1)
    res = MDM.send('AT#MWI=0\r', 10) #Disable Message Waiting Indication
    res = MDM.receive(50)
    s1print ('DialMode',1)
    res = MDM.send('AT#DialMode=2\r', 10) #Dialmode for full call progress monitoring
    res = MDM.receive(50)
    ## #sync network time to internal clock
    ## s1print ('sync network time to internal clock',1)
    ## # #notification every time, for the first network attach WAS 1,0 but is now diabled because of forcing messages each time a new time is logged.
    ## res = MDM.send('AT#NITZ=1,1\r', 10)
    ## res = MDM.receive(50)
    ## s1print ('network time response: ' + res,1)
    ## res = MDM.send('AT#NITZ?\r', 10) #Seems to need to be read to enforce value. Not sure why!
    ## res = MDM.receive(50)
    ## s1print ('network time response: ' + res,1)
    #Set the device in voice mode
    s1print ('FClass',1)
    res = MDM.send('AT+FCLASS=8\r',10) #Set the device in voice mode
    res = MDM.receive(2) #Reply comes back within 200mS (probably much faster)
    #Set the desired audio path active
    s1print ('CAP',1)
    res = MDM.send('AT#CAP=2\r',10) #2 for internal MT path
    res = MDM.receive(2) #Reply comes back within 200mS (probably much faster)
    s1print ('Store settings in NVR',1)
    res = MDM.send('AT&W\r', 10) #Save commands not automatically stored in NVR
    res = MDM.receive(50)
    #Get the SMSC number for reference
    res = MDM.send('AT+CSCA?\r',10) #Read SMSC
    res = MDM.receive(5) #Reply comes back within 200mS (probably much faster)
    s1print ('SIM Stored SMSC: ' + res,1)
    s1print ('GL865 Initialised',1)
    return

  • Zitat

    Below is my initialisation code and I would appreciate advice on what I must have missed or set in error.


    You don't check if the module is registered for example. After each command you should wait/check if the command is carried out.

  • I have added a check to each command


    s1print ('res = ' + res,1)
    if (res.find("OK") == -1): s1print ('Error in res',1)


    and confirmed that each command is successful. Only one fails:


    #Set the desired audio path active
    s1print ('CAP',1)
    res = MDM.send('AT#CAP=2\r',10) #2 for internal MT path
    res = MDM.receive(2) #Reply comes back within 200mS (probably much faster)
    s1print ('res = ' + res,1)
    if (res.find("OK") == -1): s1print ('Error in res',1)


    I don't understand why this fails as the command is supported by GL865


    AutoBND also failed but I realise now that this is not available with GL865. (This code was written for GM862).


    However, I have found the problem with the call progress reporting.
    My command for dialling was
    ATDS=0
    but should have been
    ATDS=0; (SEMICOLON at end).


    This now works OK with progress reported correctly.


    I have another question about CFUN=4 but will open a new thread.


    Before we close this thread, can you advise why
    res = MDM.send('AT#CAP=2\r',10) #2 for internal MT path
    returns an error.