unsigned long TestHooks::TSK_pvg_send_msg_ex(unsigned long p1, unsigned long p2)
{
    unsigned long res=0;

    res =  m_TSK_pvg_send_msg_ex_fn(p1, p2);

    logMessageEx("--- TestHooks::TSK_pvg_send_msg_ex %08x, %08x -> %08x", p1, p2, res);

    return res;
}
unsigned long IopSimHooks::TSK_pvg_send_msg_ex(unsigned long p1, unsigned long p2)
{
    unsigned long res=0;

    lock();


    //logMessageEx("--- IopSimHooks::TSK_pvg_send_msg_ex IN %08x, %08x", p1, p2);

    if(0x12 == p1)
    {

        static bool first_message=true;

        unsigned long* addr = (unsigned long* )p2;
        unsigned long addr_msg = *addr;

        unsigned long  msg_type = *(unsigned long*)(addr_msg+1*4);

        //logMessageEx("--- IopSimHooks::TSK_pvg_send_msg_ex msg_type %08x", msg_type);

        if(0 == msg_type)
        {
            send_msg_ex_0x12* pmsg  = (send_msg_ex_0x12*)(addr_msg+0x0b);
#if 0
            logMessageEx("--- IopSimHooks::TSK_pvg_send_msg_ex lat=%f, lon=%f, spe=%f head=%f vs=%f, alt=%f, alt2=%f", 
                pmsg->latitude*RAD2DEG,
                pmsg->longitude*RAD2DEG,
                pmsg->speed,
                pmsg->heading*RAD2DEG, 
                pmsg->verticalSpeed,
                pmsg->altitude,
                pmsg->altitude2);
#endif



            if(first_message)
            {
                m_altitude2 = pmsg->altitude2;
                first_message = false;
            }

            pmsg->altitude = m_altitude;
            pmsg->altitude2 = m_altitude + m_altitude2;

            pmsg->speed = m_speed;
            pmsg->heading = m_heading;

            pmsg->latitude = m_latitude;
            pmsg->longitude = m_longitude;


        }

    }


    res =  m_TSK_pvg_send_msg_ex_fn(p1, p2);

    //logMessageEx("--- IopSimHooks::TSK_pvg_send_msg_ex OUT %08x, %08x -> %08x", p1, p2, res);


    unlock();

    return res;
}