#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#include <errno.h>

#include "osp.h"




int32_t osp_send_othermsg(Osp_Msg_Head *pMsg, uint64_t data)
{
    int32_t ret = OSP_OK;
    OSP_FUNCPTR func;

    func = (OSP_FUNCPTR)data;
    
    ret = func((char *)pMsg, pMsg->MsgSize + MSG_HEAD_SIZE);

    osp_free_msg(pMsg);
    return ret;
}

Osp_Msg_Head *osp_rev_other_msg(uint64_t data)
{
    Osp_Msg_Head *pMsg;
    int32_t ret;
    int32_t len;
    OSP_FUNCPTR func;

    
    pMsg = osp_alloc_msg(OSP_MAX_OTHER_MSG_LEN);
    if (NULL == pMsg)
    {
        return NULL;
    }

    func = (OSP_FUNCPTR)data;
    
    ret = func((char *)pMsg, &len);
    if (ret < 0)
    {
        osp_free_msg(pMsg);
        return NULL;
    }


    return (Osp_Msg_Head *)pMsg;
    
}




