Example #1
0
    std::vector<unsigned char> Emulator::SendCmd(size_t const unit,
                                                 std::vector<unsigned char> const & packet, 
                                                 size_t const timeoutMs) {

        PacketListener::Ptr pRh(new SyncResponseHandler(UnitId(unit)));
        auto pPacketPromise = dynamic_cast<SyncResponseHandler*>(pRh.get())->GetPromise();
        auto packetFuture = pPacketPromise->get_future();
        size_t handler;
        {
            LOCK_SCOPE;
            handler = NextIdx(mExclusiveHandlers);
            mExclusiveHandlers.emplace(handler, pRh);
        }

        mpDev->SendPacket(*Packet::Down(UnitId(unit), packet.begin(), packet.end()));

        if(timeoutMs && 
           packetFuture.wait_for(chrono::milliseconds(timeoutMs)) == future_status::timeout) { 
            LOCK_SCOPE;
            mExclusiveHandlers.erase(handler);
            throw runtime_error("Response timeout");
        }

        // if the handler got called, it has been removed from the handler
        // stack automatically.
        
        auto resp = packetFuture.get();


        return std::vector<unsigned char>(resp.Begin(), resp.End());
    }
// ---------------------------------------------------------------------------
// CAccPolAudioUnitBase::GetAudioControlsL
// ---------------------------------------------------------------------------
//
EXPORT_C void CAccPolAudioUnitBase::GetAudioUnitListL(
    RPointerArray<CAccPolAudioUnitBase>& aAudioUnits ) const
    {
    API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetAudioUnitListL() - Enter" );
    RPointerArray<CAccPolAudioUnitBase> audioUnits;

    reinterpret_cast<CAccPolAudioTopologyObjectCon*> ( iObjectContainer )->GetAudioUnitsL(
        audioUnits );
    TInt audioUnitCount = audioUnits.Count();
    TInt sourceIdCount = iSourceId.Count();
    API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetAudioUnitListL() - Source id count=%d", sourceIdCount );
    for( TInt i = 0; i < sourceIdCount; i++ )
        {
        for( TInt j = 0; j < audioUnitCount; j++ )
            {
            if( iSourceId.operator[]( i )
                == audioUnits.operator[]( j )->UnitId() )
                {
                aAudioUnits.AppendL( audioUnits.operator[]( j ) );
                audioUnits.operator[]( j )->SetPreviousUnitId( UnitId() ); //JNI               
                }
            }
        }
    API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetAudioUnitListL() - Return" );
    }
// ---------------------------------------------------------------------------
// CAccPolAudioUnitBase::GetAudioControlsL
// ---------------------------------------------------------------------------
//
EXPORT_C TBool CAccPolAudioUnitBase::GetNextAudioUnitL(
    CAccPolAudioUnitBase*& aAudioUnit ) const
    {
    API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetNextAudioUnitL() - Enter" );
    RPointerArray<CAccPolAudioUnitBase> audioUnits;
    TBool bFound = EFalse;

    reinterpret_cast<CAccPolAudioTopologyObjectCon*> ( iObjectContainer )->GetAudioUnitsL(
        audioUnits );

    TInt count = audioUnits.Count();

    aAudioUnit = NULL;
    for( TInt i = 0; i < count; i++ )
        {

        if( iSourceId.Count() != 0 ) //JNI
            {
            API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] SourceId - count=%d", iSourceId.Count() );
            TInt sourceid = iSourceId.operator[]( 0 );
            if( iSourceId.operator[]( 0 )
                == audioUnits.operator[]( i )->UnitId() )
                {
                aAudioUnit = audioUnits.operator[]( i );
                aAudioUnit->SetPreviousUnitId( UnitId() );
                bFound = ETrue;
                break;
                }
            }
        }

    API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetNextAudioUnitL() - Return=%d", bFound );
    return bFound;
    }
Example #4
0
 bool Emulator::Send(size_t const unit, std::vector<unsigned char> const & packet) {
     auto p = Packet::Down(UnitId(unit), packet.begin(), packet.end());
     try {
         mpDev->SendPacket(*p);
     } catch(exception e) {
         D(string("error: ") + e.what());
         return false;
     }
     return true;
 }