cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
878
Views
0
Helpful
3
Replies

Cisco TAPI - SLDST_START_CALL_RECORDING expecting wrong parameter size

Eric.L.Johnson1
Level 1
Level 1

The call is expecting 16 bytes, the class in the header is 12 bytes.

Version: 10.5.1.10000-7

Using Cisco TAPI TSP 64-bit and the headers with that Applications \ Plugin

Error message in TSP debug log:

14:53:09.603 |   CSelsiusTSPLine::DevSpecific() [0x00000536] inside of SLDST_START_CALL_RECORDING

...

14:53:09.603 |   CSelsiusTSPLine::DevSpecific() [0x00000536] *ERROR* dwSize mis-match 0x0000000C (expected 0x00000010)

Classes in CiscoLineDevSpecificMsg.h

class CCiscoLineDevSpecific

{

public:

    CCiscoLineDevSpecific(DWORD msgType) :

        m_MsgType(msgType)

    {

        ;

    }

    virtual ~CCiscoLineDevSpecific()

    {

        ;

    }

    DWORD GetMsgType(void) const

    {

        return m_MsgType;

    }

    void* lpParams(void) const

    {

        return (void*) &m_MsgType;

    }

    virtual DWORD dwSize(void) const = 0;

private:

    DWORD m_MsgType;                                   // 4 bytes

};

class CCiscoLineDevSpecificStartCallRecording: public CCiscoLineDevSpecific

{

public:

    CCiscoLineDevSpecificStartCallRecording() :

        CCiscoLineDevSpecific(SLDST_START_CALL_RECORDING)

    {

    }

    virtual ~ CCiscoLineDevSpecificStartCallRecording()

    {

    }

    DWORD m_ToneDirection;                             // 4 bytes

    DWORD m_InvocationType;                           // 4 bytes

    virtual DWORD dwSize(void) const

    {

        return sizeof(*this) - sizeof(void*);

    } // subtract out the virtual function table pointer

};

Are there updated headers or TSP available?

Thank you

Eric J

3 Replies 3

Eric.L.Johnson1
Level 1
Level 1

Found Solution:

Add in the CiscoLineDevSpecificMsg.h, CCiscoLineDevSpecificStartCallRecording a dummy DWORD between the m_ToneDirection and m_InvocationType, setting it to 0.

As in:

class CCiscoLineDevSpecificStartCallRecording: public CCiscoLineDevSpecific

{

...

    DWORD m_ToneDirection;                             // 4 bytes

    DWORD m_dummy;

    DWORD m_InvocationType;                           // 4 bytes

...

};

START_CALL_RECORD succeeded and produced a recording.

Will still have to verify whether the Record Feature light is lit, i.e. is the InvocationType parameter working.

Question:

Is there a corrected CiscoLineDevSpecificMsg.h available?

Hi Eric,

Please make sure that application/TSP/OS are all 64-bit or 32-bit.  We only support fully 64-bit or fully 32-bit stacks. My understanding is that your application is 32-bit running on a 64-bit stacks. The workaround is ok for now but you may run into other issues so it is best that you recompile your application for 64-bit environment.

Regards,

David

Hi Eric,

I just talked to our TAPI DE about this issue. We do not support cross platform (64bit TSP will only support 64bit app). Even if you have a workaround this issue, more issues can come in the future. In addition, LineDevSpecific class has virtual pointers and VP size varies from 32bit to 64bit.

Hope that helps.

Regards,

David