コード例 #1
0
ファイル: fp_application.c プロジェクト: dialelo/university
void msf_send_DispReq(char * displayText, char * callbackNo, PPIDType user, UByte setupSpec)
{
    SioMsfInfoReqType * infoReq;
    int index = 0;
    PMIDType pmid;
    int callBackNoLength = 0;

    PPID2PMID(&pmid, user);

    if (callbackNo != 0) {
        callBackNoLength = strlen(callbackNo);
    }

    NewSignal(sizeof(SignalType) + strlen(displayText) + 1 + 1 + callBackNoLength + 1 + 1, (void**) &infoReq);

    infoReq->PpSetup = setupSpec;

    memcpy(getSioMsfInfoReqTypeIE(infoReq), displayText, strlen(displayText));
    index += strlen(displayText);

    getSioMsfInfoReqTypeIE(infoReq)[index++] = 0x00; /*zero terminate string*/

    if (callbackNo != 0) {
        memcpy(getSioMsfInfoReqTypeIE(infoReq) + index, callbackNo, strlen(callbackNo));
        index += strlen(callbackNo);
    }

    getSioMsfInfoReqTypeIE(infoReq)[index] = 0x00; /*zero terminate string*/

    memcpy((UByte*) infoReq->SignalHeader.Address, &pmid, 3);
    SendSignal((SignalType *) infoReq, APP_SS_PROCESS_ID, APP_SS_PRIMITIVE, SIO_MSF_INFO_req);
}
コード例 #2
0
ファイル: fp_application.c プロジェクト: dialelo/university
UByte voice_disConnectUser(PPIDType user)
{
    if (QuickData[user].EmptyMarker == 0) {
        ApplicationInstanceType *applicationInstanceData;
        PMIDType pmid;

        PPID2PMID((PMIDType *) pmid, user);
        applicationInstanceData = getApplicationInstance(pmid);

        if (applicationInstanceData->state == connected) {
            SignalType *CcReleasePrim;
            UByte Data[2] = { 0x2e, 00 };

            NewSignal(sizeof(SignalType) + 2, (void **) &CcReleasePrim);
            memcpy(CcReleasePrim->Address, pmid, 3);
            CcReleasePrim->Address[3] = 0x00;
            _memcpy(getCcReleasePrimTypeIE(CcReleasePrim), Data, 2);
            SendSignal((SignalType *) CcReleasePrim, IWU_PROCESS_ID, IWU_PRIMITIVE, CC_RELEASE_prim);
            applicationInstanceData->state = idle;
            return 0;
        } else {
            return 2;
        }
    } else {
        return 3;
    }
}
コード例 #3
0
ファイル: fp_application.c プロジェクト: dialelo/university
UByte msf_setupreq_format1(PPIDType to, UByte setupSpec1, char * display, PPIDType callbackId)
{
    SignalType * signal;
    PMIDType pmid;
    char callback[12];

    if (QuickData[to].EmptyMarker != 0)
        return 0;

    PPID2PMID(&pmid, to);

    memset(callback, 0, 12);
    StrPrintHexWord(callback, callbackId);

    NewSignal(sizeof(SignalType) + 3 + strlen(display) + strlen(callback), (void**) &signal);
    getSignalData(signal)[0] = setupSpec1;
    memcpy(getSignalData(signal) + 1, display, strlen(display));
    getSignalData(signal)[1 + strlen(display)] = 0;
    if (strlen(callback) > 0) {
        memcpy(getSignalData(signal) + 1 + strlen(display) + 1, callback, strlen(callback) + 1);
    } else {
        getSignalData(signal)[1 + strlen(display) + 1] = 0;
    }

    memcpy(signal->Address, pmid, 3);
    SendSignal(signal, APP_SS_PROCESS_ID, APP_SS_PRIMITIVE, SIO_MSF_SETUP_req);
    return 1;
}
コード例 #4
0
ファイル: fp_application.c プロジェクト: dialelo/university
void handleAPPCCSetupInd(SignalType * TheSignal, ApplicationInstanceType * applicationInstanceData)
{
    SignalType *appccSetupAckReqSignal;
    char StatusString[256];
    char* tmp = StatusString;
    tmp = StringPrint(tmp, "\r\nApplication: outgoing call start: Calling party number: ");
    tmp = StringPrint(tmp, (char*) (getSignalData(TheSignal) + 1));
    PrintStatus(0, StatusString);

    applicationInstanceData->state = outgoingcall;

    NewSignal(sizeof(SignalType) + 9, (void**) &appccSetupAckReqSignal);
    memcpy(appccSetupAckReqSignal->Address, TheSignal->Address, 4);

    getSignalData(appccSetupAckReqSignal)[0] = 0x08; /*//info element offset*/
    getSignalData(appccSetupAckReqSignal)[1] = 0x01; /*UplaneEndpointStart*/
    getSignalData(appccSetupAckReqSignal)[2] = 0x02; /*UplaneEndpointStart*/
    getSignalData(appccSetupAckReqSignal)[3] = 0x00; /*UplaneEndpointStart*/
    getSignalData(appccSetupAckReqSignal)[4] = 0x00; /*UplaneEndpointStart*/
    getSignalData(appccSetupAckReqSignal)[5] = 0x1e;
    getSignalData(appccSetupAckReqSignal)[6] = 0x02;
    getSignalData(appccSetupAckReqSignal)[7] = 0x85;
    getSignalData(appccSetupAckReqSignal)[8] = 0x88;

    SendSignal(appccSetupAckReqSignal, APP_CC_PROCESS_ID, APP_CC_PRIMITIVE, APPCCSetupAckReq);
}
コード例 #5
0
static void EEPROMWriteReadTestHandler(SignalType * Signal)
{
    switch (Signal->Event)
    {
        case EE_PRIMITIVE:
            switch (Signal->SubEvent)
            {
                case EE_READ_DATA_cfm:
                {
                    char* ptr;
                    EeStoreDataReqType *EeStoreDataReq;

                    ptr = StringPrint(StatusString, "EE_READ_DATA_cfm[");
                    ptr = StrPrintHexWord(ptr, EEP_UserDataArea);
                    ptr = StringPrint(ptr, "]=[");
                    ptr = StrPrintHexByte(ptr, eepromData[0]);
                    ptr = StringPrint(ptr, "]");
                    PrintStatus(0, StatusString);

                    eepromData[0]++;

                    NewSignal(sizeof(EeStoreDataReqType) + 1, (void **) &EeStoreDataReq);
                    getSignalData(EeStoreDataReq)[0] = eepromData[0];
                    EeStoreDataReq->DataTypes = EEDT_ANYADDRESS;
                    EeStoreDataReq->SubsNo = 0;
                    setAddressData(EEP_UserDataArea, 1);
                    SendSignal((SignalType *) EeStoreDataReq, EE_PROCESS_ID, EE_PRIMITIVE, EE_STORE_DATA_req);

                    setSignalHandler(APPLICATION_PROCESS_ID_PP, PPconnectionHandler, 0);
                }
                break;
            }
    }
    DeleteBuffer(Signal);
}
コード例 #6
0
ファイル: fp_application.c プロジェクト: dialelo/university
UByte voice_callUser(PPIDType called, PPIDType caller)
{
    ApplicationInstanceType *applicationInstanceData;

    if (QuickData[called].EmptyMarker == 0) {
        SignalType * signal;
        NewSignal(sizeof(SignalType), (void**) &signal);

        PPID2PMID((PMIDType *) signal->Address, called);

        applicationInstanceData = getApplicationInstance(signal->Address);

        if (applicationInstanceData->state == idle) {
            applicationInstanceData->state = incommingcall;
            applicationInstanceData->connectedTo = caller;

            SendSignal((SignalType*) signal, APP_CC_PROCESS_ID, APP_CC_PRIMITIVE, APPCCSetupReq);

            /*setup the outgoing side of the call:*/
            {
                PMIDType pmid;
                char tmp[13];
                UByte sum = called;

                PPID2PMID(&pmid, caller);

                applicationInstanceData = getApplicationInstance(pmid);
                applicationInstanceData->connectedTo = called;

                memset(tmp, 0, 12);
                tmp[0] = sum + '0';
                handleConnectPrim(pmid, applicationInstanceData);
                /*{
                 AudioLineCtrlReqType *AudioLineCtrlReq;
                 NewSignal(sizeof(AudioLineCtrlReqType), (void **) &AudioLineCtrlReq);
                 AudioLineCtrlReq->TheSignal.Address[0] = 0x0F;
                 AudioLineCtrlReq->TheSignal.Address[1] = 0;//MeInstance->Mcei;
                 AudioLineCtrlReq->Lid = sum;
                 _memcpy(AudioLineCtrlReq->Pmid,pmid,3);
                 AudioLineCtrlReq->option = 3;
                 PrintStatus(0, "\r\napp: send AUDIOLINECTRL_req to mac layer");

                 SendSignal((SignalType*)AudioLineCtrlReq, CCF_PROCESS_ID, CCF_PRIMITIVE, AUDIOLINECTRL_req);
                 }*/
            }

            return 1;
        } else {
            DeleteBuffer(signal);
            PrintStatus(0, "\r\nnumber found, but user allready active.\n");
            return 2;
        }
    } else {
        PrintStatus(0, "\r\nnumber not found...");
        return 3;
    }
}
コード例 #7
0
ファイル: fp_application.c プロジェクト: dialelo/university
UByte msf_send_CONNECT_res(PPIDType user)
{
    SignalType * signal;
    PMIDType pmid;
    getApplicationInstanceData(user)->msfState = msf_connected;
    NewSignal(sizeof(SignalType) + 2, (void**) &signal);
    PPID2PMID(&pmid, user);
    memcpy(signal->Address, pmid, sizeof(PMIDType));
    SendSignal(signal, APP_SS_PROCESS_ID, APP_SS_PRIMITIVE, SIO_MSF_CONNECT_res);
    return 1;
}
コード例 #8
0
ファイル: fp_application.c プロジェクト: dialelo/university
void handleConnectPrim(PMIDType pmid, ApplicationInstanceType * applicationInstanceData)
{
    SignalType *ccconnectSignal;

    NewSignal(sizeof(SignalType) + 5, (void**) &ccconnectSignal);
    memcpy(ccconnectSignal->Address, pmid, 3); /*pmid in address field*/
    getSignalData(ccconnectSignal)[0] = 0x05; /*info element offset*/
    getSignalData(ccconnectSignal)[1] = 0x01; /*UplaneEndpointStart*/
    getSignalData(ccconnectSignal)[2] = 0x02; /*UplaneEndpointStart*/
    getSignalData(ccconnectSignal)[3] = 0x00; /*UplaneEndpointStart*/
    getSignalData(ccconnectSignal)[4] = 0x00; /*UplaneEndpointStart*/

    applicationInstanceData->state = connected;
    SendSignal(ccconnectSignal, APP_CC_PROCESS_ID, APP_CC_PRIMITIVE, APPCCConnectAckReq);
}
コード例 #9
0
ファイル: fp_application.c プロジェクト: dialelo/university
UByte msf_send_ReleaseReq(PPIDType user, UByte releaseReason)
{
    SignalType * signal;
    PMIDType pmid;

    if (QuickData[user].EmptyMarker != 0)
        return 0;

    getApplicationInstanceData(user)->msfState = msf_release_pending;
    NewSignal(sizeof(SignalType) + 1, (void**) &signal);

    getSignalData(signal)[0] = releaseReason;

    PPID2PMID(&pmid, user);
    memcpy(signal->Address, pmid, sizeof(PMIDType));
    SendSignal(signal, APP_SS_PROCESS_ID, APP_SS_PRIMITIVE, SIO_MSF_RELEASE_req);
    return 1;
}
コード例 #10
0
static void PPDialingHandler(SignalType * Signal)
{
    switch (Signal->Event)
    {
        case IWU_PRIMITIVE:
        {
            switch (Signal->SubEvent)
            {
                case CC_CONNECT_prim:
                {
                    SignalType * startAudio;
                    NewBuffer(sizeof(SignalType), (void**) &startAudio);
                    SendSignal((SignalType*) startAudio, DSP_PROCESS_ID, SETUPAUDIO_EVENT, 0);
                    connected = 1;
                }
                case CC_INFO_prim: /*do not break*/
                {
                    if (connected == 1) {
                        SignalType* mySignal;
                        NewSignal(sizeof(SignalType) + 2 + strlen(numberToDial), (void **) &mySignal);
                        getSignalData(mySignal)[0] = 0x2c;
                        getSignalData(mySignal)[1] = strlen(numberToDial);
                        memcpy(getSignalData(mySignal) + 2, numberToDial, strlen(numberToDial));
                        InjectSignal(mySignal, IWU_PROCESS_ID, IWU_PRIMITIVE, CC_INFO_prim, Signal->SessionId);
                    }
                }
                break;
                case CC_RELEASE_prim:
                {
                    if (connected == 1) {
                        Signal->SignalLength = sizeof(CcReleaseComPrimType);
                        SendSignal(Signal, IWU_PROCESS_ID, IWU_PRIMITIVE, CC_RELEASE_COM_prim);
                        connected = 0;
                        setSignalHandler(APPLICATION_PROCESS_ID_PP, PPconnectionHandler, 0);
                        return;
                    }
                }
                break;
            }
        }
    }
    DeleteBuffer(Signal);
}
コード例 #11
0
ファイル: fp_application.c プロジェクト: dialelo/university
UByte fp_send_module2module(PPIDType user, module2moduleData data)
{
    SsFacilityPrimType * SsFacilityPrim;
    UByte * dst;
    UByte cnt;

    NewSignal(sizeof(SsFacilityPrimType) + 5, (void**) &SsFacilityPrim);
    dst = (UByte *) getSsFacilityPrimTypeIE(SsFacilityPrim);

    dst[0] = MODULE_SHORT_MSF;

    for (cnt = 1; cnt <= 3; cnt++)
        dst[cnt] = data[cnt - 1];

    PPID2PMID((PMIDType*) SsFacilityPrim->SignalHeader.Address, user);

    SendSignal((SignalType*) SsFacilityPrim, IWU_PROCESS_ID, IWU_PRIMITIVE, SS_TUNNEL_prim);

    return 0;
}
コード例 #12
0
ファイル: fp_application.c プロジェクト: dialelo/university
UByte msf_send_ppstatusReq(PPIDType to, UByte statusType, UByte * data, UByte dataLength)
{
    SignalType * signal;
    PMIDType pmid;

    if (QuickData[to].EmptyMarker != 0)
        return 1;

    if (dataLength > 100)
        return 2;

    PPID2PMID(&pmid, to);

    NewSignal(sizeof(SignalType) + 1 + dataLength, (void**) &signal);
    getSignalData(signal)[0] = statusType;
    memcpy(getSignalData(signal) + 1, data, dataLength);

    memcpy(signal->Address, pmid, 3);
    SendSignal(signal, APP_SS_PROCESS_ID, APP_SS_PRIMITIVE, SIO_PP_STATUS_req);
    return 0;
}
コード例 #13
0
ファイル: fp_application.c プロジェクト: dialelo/university
UByte msf_setupreq_format2(PPIDType to, UByte setupSpec1, char * display, PPIDType callbackId, UByte setupSpec2, UByte setupSpec3, alertConstructiontType alertConstruction, UByte displayTimeout, dateAndTimeType dateAndTime)
{
    SignalType * signal;
    PMIDType pmid;
    char callback[12];
    UByte index;

    if (QuickData[to].EmptyMarker != 0)
        return 0;

    PPID2PMID(&pmid, to);

    memset(callback, 0, 12);
    StrPrintHexWord(callback, callbackId);

    NewSignal(sizeof(SignalType) + 3 + strlen(display) + strlen(callback) + 6 + 1 + dateAndTime.length, (void**) &signal);
    getSignalData(signal)[0] = setupSpec1;
    memcpy(getSignalData(signal) + 1, display, strlen(display));
    getSignalData(signal)[1 + strlen(display)] = 0;
    if (strlen(callback) > 0) {
        memcpy(getSignalData(signal) + 1 + strlen(display) + 1, callback, strlen(callback) + 1);
        index = 1 + strlen(display) + 1 + strlen(callback) + 1;
    } else {
        getSignalData(signal)[1 + strlen(display) + 1] = 0;
        index = 1 + strlen(display) + 1 + 1;
    }

    getSignalData(signal)[index++] = setupSpec2;
    getSignalData(signal)[index++] = setupSpec3;
    getSignalData(signal)[index++] = alertConstruction.alertPattern;
    getSignalData(signal)[index++] = alertConstruction.alertTone;
    getSignalData(signal)[index++] = alertConstruction.alertTimeout;
    getSignalData(signal)[index++] = displayTimeout;
    memcpy(getSignalData(signal) + index, (UByte*) &dateAndTime.length, dateAndTime.length + 1);

    memcpy(signal->Address, pmid, 3);
    SendSignal(signal, APP_SS_PROCESS_ID, APP_SS_PRIMITIVE, SIO_MSF_SETUP_req);
    return 1;
}
コード例 #14
0
ファイル: fp_application.c プロジェクト: dialelo/university
UByte voice_updateDisplay(PPIDType user, char * display)
{
    SignalType *ccinfoSignal;
    ApplicationInstanceType *applicationInstanceData;
    PPID2PMID(&tmpPmid, user);
    applicationInstanceData = getApplicationInstance(tmpPmid);

    if (user != 0xffff && applicationInstanceData != NULL) {
        NewSignal(sizeof(SignalType) + 14, (void**) &ccinfoSignal);

        memcpy(ccinfoSignal->Address, tmpPmid, 3); /*pmid in address field*/
        getSignalData(ccinfoSignal)[0] = 0x01; /*info element offset*/
        getSignalData(ccinfoSignal)[1] = 0x28;
        getSignalData(ccinfoSignal)[2] = 0x02 + strlen(display);
        getSignalData(ccinfoSignal)[3] = 0x04;
        getSignalData(ccinfoSignal)[4] = 0x0C;

        memcpy(getSignalData(ccinfoSignal) + 5, display, strlen(display)); /*multidisplay, iwutoiwu, signal*/

        SendSignal(ccinfoSignal, APP_CC_PROCESS_ID, APP_CC_PRIMITIVE, APPCCInfoReq);
        return 1;
    }
    return 0;
}
コード例 #15
0
void PPconnectionHandler(SignalType * Signal)
{
    switch (Signal->Event)
    {
        case APPLICATION_PRIMITIVE:
        {
            switch (Signal->SubEvent)
            {
                case MSFInd:
                {
                    AppMSFType* msfInd = (AppMSFType*) Signal;
                    char* msf = mem_malloc(msfInd->length + 1, 100);
                    memcpy(msf, getAppMSFTypeIE(msfInd), msfInd->length);
                    msf[msfInd->length] = '\0';
                    PrintStatus(0, msf);
                    if (strlen(msf) > 4) {
                        if (memcmp(msf, "DIAL", 4) == 0) {
                            char *number = &msf[4];
                            if (strlen(number) < 5) {
                                TimerType * timer = NewTimer(APPLICATION_PROCESS_ID_PP, WAIT_CONNECTION, 0);
                                StartTimer(timer, 200); /* wait 2 sec before dialing call*/
                                memcpy(numberToDial, number, strlen(number));
                                numberToDial[strlen(number)] = '\0';
                            }
                        }
                    }
                    mem_free(msf);
                    break;
                }
            }
        }
        break;
        case IWU_PRIMITIVE:
        {
            switch (Signal->SubEvent)
            {
                case CC_SETUP_prim:
                {
                    char* ptr;
                    char CallingPartyNo[INFO_BUFSIZE];

                    CcSetupPrimType *CcSetupPrim = (CcSetupPrimType *) Signal;
                    CallingPartyNoType *CallingPartyNoPtr;
                    SignalIEType *SignalIE;
                    TimerType * timer = NewTimer(APPLICATION_PROCESS_ID_PP, OFFHOOKTIMER, 0);
                    StartTimer(timer, 200); /* wait 2 sec before accepting call*/

                    CallingPartyNoPtr = (CallingPartyNoType *) FindInfoElement(CallingPartyNoId, getCcSetupPrimTypeIE(CcSetupPrim) - 2, CcSetupPrim-> SignalHeader. SignalLength - sizeof(CcSetupPrimType) + 2);

                    GetCallingPartyNo(CallingPartyNoPtr, CallingPartyNo, 32);

                    SignalIE = (SignalIEType *) FindInfoElement(SignalId, getCcSetupPrimTypeIE(CcSetupPrim) - 2, CcSetupPrim->SignalHeader. SignalLength - sizeof(CcSetupPrimType) + 2);
                    if (SignalIE) {
                    } else {
                        PrintStatus(0, "No SignalIE! EXTERNAL_RING");
                    }
                    Signal->SignalLength = sizeof(CcAlertingPrimType);
                    SendSignal(Signal, IWU_PROCESS_ID, IWU_PRIMITIVE, CC_ALERTING_prim);

                    ptr = StringPrint(StatusString, "CallingPartyNo [");
                    ptr = StringPrint(ptr, CallingPartyNo);
                    ptr = StringPrint(ptr, "]");
                    PrintStatus(0, StatusString);
                    connected = 1;
                    return;
                }
                case CC_RELEASE_COM_prim:
                break;
                case CC_RELEASE_prim:
                {
                    SignalType* stopAudio;
                    Signal->SignalLength = sizeof(CcReleaseComPrimType);
                    SendSignal(Signal, IWU_PROCESS_ID, IWU_PRIMITIVE, CC_RELEASE_COM_prim);
                    NewSignal(sizeof(SignalType), (void**) &stopAudio);
                    SendSignal((SignalType*) stopAudio, DSP_PROCESS_ID, STOPAUDIO_EVENT, 0);
                    return;
                }
                case CC_CONNECT_ACK_prim:
                {
                    EeReadDataReqType *EeReadDataReq;
                    NewSignal(sizeof(EeReadDataReqType) + sizeof(void *), (void **) &EeReadDataReq);
                    EeReadDataReq->ReturnTIPD = TIPD_APPLICATION;
                    EeReadDataReq->DataTypes = EEDT_ANYADDRESS;
                    /* getEeReadDataReqTypeDataPtr(EeReadDataReq)[0] = (void *) &eepromData; */
                    memset(&eepromData, 0x00, 1);
                    setAddressData(EEP_UserDataArea, 1);
                    SendSignal((SignalType *) EeReadDataReq, EE_PROCESS_ID, EE_PRIMITIVE, EE_READ_DATA_req);
                    setSignalHandler(APPLICATION_PROCESS_ID_PP, EEPROMWriteReadTestHandler, 0);
                }
                break;
                case CC_CONNECT_prim:
                {
                    if (firsttime) {
                        UByte * tmp;
                        /* UByte cnt;*/

                        /*MuteTransmitter();*/

                        /*for (cnt=0; cnt < 6; cnt++)*/
                        {
                            tmp = pp_get_speech_buffer(0);
                            if (tmp != 0) {
                                UByte count;
                                char* ptr;
                                ptr = StringPrint(StatusString, "***Buffer: [");
                                ptr = StrPrintHexAddr(ptr, (unsigned long) tmp);

                                for (count = 0; count < 40; count++) {
                                    tmp[count] = 0x00;
                                }

                                tmp[0] = 0xCA;
                                tmp[1] = 0xFE;
                                tmp[2] = 0xBA;
                                tmp[3] = 0xBE;
                                tmp[4] = 0;
                                tmp[5] = 0;
                                tmp[6] = 0xff;
                                tmp[7] = 0xff;

                                ptr = StringPrint(ptr, "]");
                                PrintStatus(0, StatusString);

                                {
                                    TimerType* connectionTimer = NewTimer(APPLICATION_PROCESS_ID_PP, PEIODICTIMER, 0);
                                    StartTimer(connectionTimer, 500); /* Wait 1 sec*/
                                    PrintStatus(0, "start the timer");
                                }
                            } else {
                                PrintStatus(0, "tmp==0");
                            }
                        }
                        firsttime = 0;
                    }
                }
                case CC_INFO_prim: /*do not break*/
                break;
                case CC_SETUP_ACK_prim:
                break;
                case CC_CALL_PROC_prim:
                break;
                case CC_ALERTING_prim:
                break;
                case SS_SETUP_prim:
                    handle_ss_setup(Signal);
                break;
                case SS_FACILITY_prim:
                    handle_ss_facility(Signal);
                break;
                default:
                {
                    char* ptr;
                    ptr = StringPrint(StatusString, "Unknown IWU_PRIMITIVE [0x");
                    ptr = StrPrintHexByte(ptr, Signal->SubEvent);
                    ptr = StringPrint(ptr, "]");
                    PrintStatus(0, StatusString);
                }
            }
        }
        break;
        case TIME_OUT_EVENT:
        {
            switch (Signal->SubEvent)
            {
                case SENDMSFTIMER:
                {
                    /*                    PrintStatus(0, "Sending MSF");*/
                    /*                    SendMsfMessage("2001", "OK!");*/
                }
                break;
                case WAIT_CONNECTION:
                {
                    callUser_PP(numberToDial, 0);
                    setSignalHandler(APPLICATION_PROCESS_ID_PP, PPDialingHandler, 0);
                }
                break;
                case OFFHOOKTIMER:
                {
                    if (connected) {
                        PrintStatus(0, "Accepting call!");
                        off_hook();
                    }
                }
                break;

                case PEIODICTIMER:
                {
                    UByte * tmp;
                    TimerType* connectionTimer = NewTimer(APPLICATION_PROCESS_ID_PP, PEIODICTIMER, 0);
                    PrintStatus(0, "PEIODICTIMER");
                    StartTimer(connectionTimer, 500); /* Wait 1 sec*/

                    tmp = pp_get_speech_buffer(1);
                    if (tmp != 0) {
                        int c;
                        char* ptr;
                        ptr = StringPrint(StatusString, "***Buffer: [");
                        ptr = StrPrintHexAddr(ptr, (unsigned long) tmp);
                        ptr = StringPrint(ptr, "-");

                        for (c = 0; c < 8; c++) {
                            ptr = StrPrintHexByte(ptr, tmp[c]);
                            ptr = StringPrint(ptr, ",");
                        }

                        ptr = StringPrint(ptr, "]");
                        PrintStatus(0, StatusString);

                    } else {
                        PrintStatus(0, "tmp==0");
                    }
                }
                break;
                default:
                {
                    PrintStatus(0, "Unknown TIME_OUT_EVENT in connection handler");
                }
            }
        }
        break;
        default:
        {
            PrintStatus(0, "Unknown event to connection handler");
        }
    }
    DeleteBuffer(Signal);
}
コード例 #16
0
ファイル: pphandler.c プロジェクト: dialelo/university
void ApplicationSignalHandler_PP(SignalType * Signal)
{
    switch (Signal->Event)
    {
    case IWU_PRIMITIVE:
    {
        switch (Signal->SubEvent)
        {
        case OM_SUBS_STATUS_ind:
        {
            OmSubsStatusIndType *OmSubsStatusInd = (OmSubsStatusIndType *) Signal;

            if (OmSubsStatusInd->Status) {
                OmSubsSelectReqType *OmSubsSelectReq;

                NewBuffer(sizeof(OmSubsSelectReqType), (void **) &OmSubsSelectReq);
                OmSubsSelectReq->SignalHeader.SignalLength = sizeof(OmSubsSelectReqType);
                OmSubsSelectReq->SubsNo = 0;
                InjectSignal((SignalType *) OmSubsSelectReq, IWU_PROCESS_ID, IWU_PRIMITIVE, OM_SUBS_SELECT_req, 0);

                switch (OmSubsStatusInd->Status)
                {
                case SS_Locked:
                {
                    setSignalHandler(APPLICATION_PROCESS_ID_PP, PPNotSubscribedHandler, 0);
                }
                break;
                case SS_Locked | SS_Subscripted:
                case SS_Subscripted:
                {
                    setSignalHandler(APPLICATION_PROCESS_ID_PP, PPAlreadySubscribedHandler, 0);
                }
                break;
                }
            }
        }
        }
    }
    break;
    case INITIALIZE_EVENT:
    {
        TimerType * timer = NewTimer(APPLICATION_PROCESS_ID_PP, WAIT_FOR_INIT, 0);
        StartTimer(timer, 200);
    }
    break;
    case TIME_OUT_EVENT:
    {
        switch (Signal->SubEvent)
        {
        case WAIT_FOR_INIT:
        {
            SignalType * ActivateSignal;
            EeReadDataReqType *EeReadDataReq;

            ProcessIdType ProcessId = IWU_PROCESS_ID;
            EventType Event = ACTIVATE_EVENT;
            SubEventType SubEvent = 0;
            NewSignal(sizeof(SignalType), (void**) &ActivateSignal);
            InjectSignal(ActivateSignal, ProcessId, Event, SubEvent, 0);

            NewSignal(offsetof(EeReadDataReqType, DataTypes) + sizeof(U16Bits) + 2 * sizeof(void *), (void **) &EeReadDataReq);
            EeReadDataReq->ReturnTIPD = PD_LCE;
            EeReadDataReq->SubsNo = 0;
            EeReadDataReq->DataTypes = EEDT_Ipei;
            getEeReadDataReqTypeDataPtr(EeReadDataReq)[0] = (void *) &HandsetIPEI[0];
            InjectSignal((SignalType *) EeReadDataReq, EE_PROCESS_ID, EE_PRIMITIVE, EE_READ_DATA_req, 0);
        }
        }
    }
    }
    DeleteBuffer(Signal);
}
コード例 #17
0
ParupaintNewDialog::ParupaintNewDialog(QWidget * parent) : 
	ParupaintDialog(parent, "new canvas..."), cwidth(0), cheight(0)
{

	this->loadGeometry("newDialog");
	this->setMinimumSize(300, 300);
	QStringList dim_list = {
		"120",
		"500",
		"540",
		"800",
		"1000",
		"1280",
		"1400",
		"1600",
	};

	auto * preview = new ParupaintCanvasPreviewWidget;

	// create width, height, middle buttons
	width = new QComboBox;
	width->setView(new QListView());
	width->addItems(dim_list);
	width->setEditable(true);
	width->setCompleter(nullptr);
	connect(width, &QComboBox::editTextChanged,
	       [=](const QString & str){
			QSettings cfg;
			cfg.setValue("canvas/lastwidth", str.toInt());
			preview->setPreviewWidth(str.toInt());
		});
	height = new QComboBox;
	height->setView(new QListView());
	height->addItems(dim_list);
	height->setEditable(true);
	height->setCompleter(nullptr);
	connect(height, &QComboBox::editTextChanged,
	       [=](const QString & str){
			QSettings cfg;
			cfg.setValue("canvas/lastheight", str.toInt());
			preview->setPreviewHeight(str.toInt());
		});

	auto * flip_button = new QPushButton("flip");
	flip_button->setToolTip("flip the values.");
	connect(flip_button, &QPushButton::pressed, [=]{
		auto hh = height->currentText();
		height->setEditText(width->currentText());
		width->setEditText(hh);
	});
	auto * cres_button = new QPushButton("take");
	cres_button->setToolTip("take the current canvas dimensions.");
	connect(cres_button, &QPushButton::pressed, [this]{
		if(cwidth && cheight){
			this->width->setEditText(QString::number(cwidth));
			this->height->setEditText(QString::number(cheight));
		}
	});
	flip_button->setMaximumHeight(25);
	cres_button->setMaximumHeight(25);
	flip_button->setMaximumWidth(40);
	cres_button->setMaximumWidth(40);

	auto * res_layout = new QHBoxLayout;
	res_layout->setMargin(0);

	res_layout->addWidget(width);
	res_layout->addWidget(flip_button, Qt::AlignCenter);
	res_layout->addWidget(cres_button, Qt::AlignCenter);
	res_layout->addWidget(height);


	// create buttons
	auto * button_layout = new QHBoxLayout;
	button_layout->setMargin(0);

	auto * enter = new QPushButton("new");
	enter->setDefault(true);
	enter->setToolTip("create a new canvas with the given dimensions.");
	connect(enter, &QPushButton::pressed, [=]{
		int w = width->currentText().toInt();
		if(w <= 0) return width->setFocus();

		int h = height->currentText().toInt();
		if(h <= 0) return height->setFocus();

		emit NewSignal(w, h, false);
	});

	auto * resize = new QPushButton("resize");
	resize->setToolTip("resize the current canvas with the given dimensions.");
	connect(resize, &QPushButton::pressed, [=]{
		int w = width->currentText().toInt();
		if(w <= 0) return width->setFocus();

		int h = height->currentText().toInt();
		if(h <= 0) return height->setFocus();

		emit NewSignal(w, h, true);
	});

	auto * reset = new QPushButton("reset");
	reset->setToolTip("reset the current canvas, keeping its dimensions.");
	connect(reset, &QPushButton::pressed, [=]{
		if(!cwidth || !cheight) return;

		emit NewSignal(cwidth, cheight, false);
	});

	connect(enter, &QPushButton::pressed, this, &ParupaintDialog::close);
	connect(resize, &QPushButton::pressed, this, &ParupaintDialog::close);
	connect(reset, &QPushButton::pressed, this, &ParupaintDialog::close);

	button_layout->addWidget(enter);
	button_layout->addWidget(resize);
	button_layout->addWidget(reset);

	QVBoxLayout * main_layout = new QVBoxLayout;
		main_layout->addWidget(preview);
		main_layout->addLayout(res_layout);
		main_layout->addLayout(button_layout);
	this->setLayout(main_layout);

	this->setTabOrder(width, height);

	QSettings cfg;
	width->setEditText(cfg.value("canvas/lastwidth").toString());
	height->setEditText(cfg.value("canvas/lastheight").toString());

	this->setFocus();
}