Home AMX User Forum AMX General Discussion

Tandberg Call Status

Im doing Program to check the duration and call status for this tandberg unit, i know how to get the status and put it in a buffer but my question is how can i know the status of VC call without pressing any button (what i mean is when somebody call it should appear instantly)

2nd question is the status i get from tandberg for call duration is in second.

Line 4 (15:21:44):: String From [5001:3:1]-[*s Call 39 Duration: 1140$0D$0A** end$0D$0A$0D$0AOK$0D$0A]

how can i change it to time format like this 1140 = 00:19:00

Comments

  • rfletcherrfletcher Posts: 217
    1. I believe the tandberg will send an unsolicited message when a call starts, you should be able to watch for that and then ask the tandberg for call status when you see it.

    2. wrt time something like this should work, I think (haven't checked to be sure and there may be easier ways though)

    hours = time/3600
    minutes = (time%3600)/60
    seconds = (time%3600)%60
  • JasonSJasonS Posts: 229
    'xFeedback Register event/incomingcallindication', and 'xFeedback Register event/calldisconnect' are the commands you want to send to the codec, I am assuming this is a C series codec? Then you will get a message containing '*e IncomingCallIndication ', or '*e CallDisconnect ' when the event happens. Not sure what the whole message looks like just copy pasted out of my module. All that info is in the "api reference guide" for your version of firmware.
  • JubalJubal Posts: 77
    where can i put the code? define program? how?

    i want to send this command but need this one automatic when there's a call
    SEND_STRING dvVTC, "'xStatus Call Duration',$0D"
    SEND_STRING dvVTC, "'xStatus Call Status',$0D"
  • JasonSJasonS Posts: 229
    When you get the incomming call notification (after you have registered for that Feedback) I would set a variable to true indicating that there is an active call, (I have an indicator on the touch panel as well) and start a timeline that would poll for call status as often as you desire. Then when you get the call disconnect notification kill the timeline and set the variable false. Or you could just time it yourself (based on call events) to reduce the comm traffic and have a more responsive display on your touch panel. There are alot of features in the protocol for the C codecs, I have probably only implemented 25% of them in my module. I still do alot of commands thru passthru, just because there is so much depth to the protocol. It is all documented very well in the api reference guide.
  • JubalJubal Posts: 77
    JasonS wrote: »
    When you get the incomming call notification (after you have registered for that Feedback) I would set a variable to true indicating that there is an active call, (I have an indicator on the touch panel as well) and start a timeline that would poll for call status as often as you desire. Then when you get the call disconnect notification kill the timeline and set the variable false. Or you could just time it yourself (based on call events) to reduce the comm traffic and have a more responsive display on your touch panel. There are alot of features in the protocol for the C codecs, I have probably only implemented 25% of them in my module. I still do alot of commands thru passthru, just because there is so much depth to the protocol. It is all documented very well in the api reference guide.


    where can i find that document???
  • JasonSJasonS Posts: 229
    Not sure what firmware version you need, this is 4.1 http://www.cisco.com/en/US/docs/telepresence/endpoint/codec-c-series/tc4/api_reference_guide/codec-c60-c40_api_reference_guide_tc41.pdf

    I just googled "Cisco C60 api" it was one of the first hits.
  • JubalJubal Posts: 77
    my next question is if i already have the status, how to put it in a buffer?
  • JasonSJasonS Posts: 229
    This is basically what I use for the C series Codecs
    DEFINE_VARIABLE
    
        VOLATILE CHAR RxBuffer[5000]
    
    DEFINE_FUNCTION ParseBuffer(CHAR sBuffer[])
    {
        IF (FIND_STRING(sBuffer, 'login:', 1))
        {
            REMOVE_STRING(sBuffer, 'login:', 1)
            //send username
        }
        IF (FIND_STRING(sBuffer, 'password:', 1))
        {
            REMOVE_STRING(sBuffer, 'password:', 1)        
            //send password
        }
        WHILE (FIND_STRING(sBuffer, "$0D, $0A", 1))
        {
            STACK_VAR CHAR sLine[128]
            
            sLine = REMOVE_STRING(sBuffer, "$0D, $0A", 1)
            //process sLine of response
        }
    }
    
    DEFINE_START
    
        CREATE_BUFFER dvRS232, RxBuffer
    
    DEFINE_EVENT
    
        DATA_EVENT [dvRS232]
        {
            STRING:
            {
                ParseBuffer(RxBuffer)
            }
        }
    

    The sLine parsing gets pretty complicated because you have to remember state across multiple lines to process each response effectively. Make sure to get the username and password in there, it is required even on the serial port. The login can be turned off from the codec advanced menu, but it is safer to deal with it in code, as this setting is reset when firmware is updated on the codec. Unless you are pursing this for the learning experience you might want to check out the AMX module to control this beast. It is a fairly complex process to parse all the data that comes back from these codecs. That being said, doing is the best way to learn!
  • JubalJubal Posts: 77
    I got a module in amx tech center, how can i get only the call status there. like this portion only





    I dont want to use all feature of this module i only need this two part.
    My issue is if i use all module, most of the channel code number is similar to the one i already have
  • JasonSJasonS Posts: 229
    Change the port number on the touch panel pages. If all your buttons are on port 1, put the codec buttons you want to use on port 2. Then in code define another tp device for port 2 and pass that to the module. Or check out the api for the module and see if there are send_commands for all the functions you want to use and code it on whichever buttons you want. That way you don't have to worry about them overlapping.
  • JubalJubal Posts: 77
    JasonS wrote: »
    Change the port number on the touch panel pages. If all your buttons are on port 1, put the codec buttons you want to use on port 2. Then in code define another tp device for port 2 and pass that to the module. Or check out the api for the module and see if there are send_commands for all the functions you want to use and code it on whichever buttons you want. That way you don't have to worry about them overlapping.


    if i change the port also in module i need to change the name for this TP. i find it more also
Sign In or Register to comment.