Esempio n. 1
0
 Connection::Connection(const QSharedPointer<Edge> &edge, const Id &local_id,
     const Id &remote_id) :
   _edge(edge),
   _local_id(local_id),
   _remote_id(remote_id)
 {
   ISink *sink = _edge->SetSink(this);
   SetSink(sink);
   QObject::connect(_edge.data(), SIGNAL(StoppedSignal()),
       this, SLOT(HandleEdgeClose()));
 }
void COggVorbisFile::FillBufferL(CMMFBuffer* aBuffer, MDataSink* aConsumer,TMediaId aMediaId)
    {
    if ((aMediaId.iMediaType==KUidMediaTypeAudio)&&(aBuffer->Type()==KUidMmfDescriptorBuffer))
        {
        //BufferEmptiedL(aBuffer);
        CMMFDataBuffer* db = static_cast<CMMFDataBuffer*>(aBuffer);
        iBody->PCMOutL(*db);
        SetSink(aConsumer);
        aConsumer->BufferFilledL(db);
        }
    else User::Leave(KErrNotSupported);
    }
Esempio n. 3
0
 Edge::~Edge()
 {
   SetSink(0);
 }
int DthAudio_02SimpleSet(struct dth_element *elem, void *value)
{
    DECLARE_ERR();
    uint32_t vl_value = DEREF_PTR(value, uint32_t);
    hats_audio_err_t vl_audioerr;

    SYSLOG(LOG_DEBUG, "DTH set with elem->user_data= %u", elem->user_data);

    switch (elem->user_data) {
    case TATAUDIO_DIGITAL_LOOP_IN_AB:

        VERIFY_DTH_TYPE(elem, DTH_TYPE_U32);
        VERIFY_ENUM(vl_value, TATAUDIO_STOP);
        if (TAT_LAST_OK()) {
            dthaudio_digital_loop_in_ab_action = vl_value;
            SYSLOG(LOG_INFO, "Digital AB Audio loop operation set to %u.", dthaudio_digital_loop_in_ab_action);
        }
        break;

    case TATAUDIO_DIGITAL_LOOP_IN_AP:

        VERIFY_DTH_TYPE(elem, DTH_TYPE_U32);
        VERIFY_ENUM(vl_value, TATAUDIO_STOP);
        if (TAT_LAST_OK()) {
            dthaudio_digital_loop_in_ap_action = vl_value;
            SYSLOG(LOG_INFO, "Digital AP Audio loop operation set to %u.", dthaudio_digital_loop_in_ap_action);
        }
        break;

    case TATAUDIO_ANALOG_LOOP:

        VERIFY_DTH_TYPE(elem, DTH_TYPE_U32);
        VERIFY_ENUM(vl_value, TATAUDIO_STOP);
        if (TAT_LAST_OK()) {
            dthaudio_analog_loop_action = vl_value;
            SYSLOG(LOG_INFO, "ANALOG Audio loop operation set to %u.", dthaudio_analog_loop_action);
        }
        break;

#if defined HATS_AB_8520_HW
    case TATAUDIO_DIGITAL_LOOP_IN_MODEM:

        VERIFY_DTH_TYPE(elem, DTH_TYPE_U32);
        VERIFY_ENUM(vl_value, TATAUDIO_MOD_STOP);
        if (TAT_LAST_OK()) {
            dthaudio_digital_loop_in_modem_action = vl_value;
            SYSLOG(LOG_INFO, "Modem Audio loop operation set to %u.", dthaudio_digital_loop_in_modem_action);
        }
        break;

    case TATAUDIO_MODEM_LOOP:

        VERIFY_DTH_TYPE(elem, DTH_TYPE_U32);
        VERIFY_ENUM(vl_value, TATAUDIO_MODEM_LOOP2);
        if (TAT_LAST_OK()) {
            dthaudio_loop_interface = vl_value;
            SYSLOG(LOG_INFO, "Modem Audio loop interface set to %u.", dthaudio_loop_interface);
        }
        break;
#endif
    case TATAUDIO_PLAYBACK:

        VERIFY_DTH_TYPE(elem, DTH_TYPE_U32);
        VERIFY_ENUM(vl_value, TATAUDIO_STOP);
        if (TAT_LAST_OK()) {
            dthaudio_playback_action = vl_value;
            SYSLOG(LOG_INFO, "Audio playback operation set to %u.", dthaudio_playback_action);
        }
        break;

    case TATAUDIO_RECORD:

        VERIFY_DTH_TYPE(elem, DTH_TYPE_U32);
        VERIFY_ENUM(vl_value, TATAUDIO_STOP);
        if (TAT_LAST_OK()) {
            dthaudio_record_action = vl_value;
            SYSLOG(LOG_INFO, "Audio record operation set to %u.", dthaudio_record_action);
        }
        break;

    case TATAUDIO_DEVICE:

        VERIFY_DTH_TYPE(elem, DTH_TYPE_U32);
        VERIFY_ENUM(vl_value, TATAUDIO_HDMI_DEVICE);
        if (TAT_LAST_OK()) {
            dthaudio_playback_device = vl_value;
            SYSLOG(LOG_INFO, "Playback device %u (0=MAIN, 1=HDMI) selected.", dthaudio_playback_device);
        }
        break;

    case TATAUDIO_SRC:

        VERIFY_DTH_TYPE(elem, DTH_TYPE_U32);
        VERIFY_ENUM(vl_value, TATAUDIO_ENUM_SRC_MAX);

        if (TAT_LAST_OK()) {
            vl_audioerr = SetSrc(AUDIO_DEVICE_0, (e_HatsAudioInput_t) Dthaudio_codec_src_tab[vl_value]);
            if (HATS_AUDIO_NO_ERROR == vl_audioerr) {
                dthaudio_source = vl_value;
                SYSLOG(LOG_INFO, "Audio source changed to %u", dthaudio_source);

            } else {
                TAT_SET_LAST_ERR(hats_audio_err_to_dth(vl_audioerr));
                SYSLOG(LOG_ERR, "Failed to set audio source");
            }
        }

        if (TAT_LAST_OK()) {
            if (TATAUDIO_SRC_MICRO_AN1B == vl_value) {
#if defined HATS_AB_8520_HW
                dthaudio_micswitch = TATAUDIO_JACKMIC;
                DthAudio_GpioConfig(TATAUDIO_GPIO_MICCTRL_DIR, TATAUDIO_GPIO_MICCTRL_OUT, TATAUDIO_GPIO_MICCTRL_PUD,
                                    TATAUDIO_GPIO_MICCTRL_OFFSET_IN_REGISTER, 1, 1, 0);
                TAT_TRY(libtatasync_msg_send(VALUE_CHANGED, "/DTH/AUDIO/Tests/Setup/GPIO_MIC_CTRL"));
#endif

                dthaudio_avconnector = TATAUDIO_AVCONN_AUDIO;
                DthAudio_GpioConfig(TATAUDIO_GPIO_VIDEOCTRL_DIR, TATAUDIO_GPIO_VIDEOCTRL_OUT, TATAUDIO_GPIO_VIDEOCTRL_PUD,
                                    TATAUDIO_GPIO_VIDEOCTRL_OFFSET_IN_REGISTER, 1, 1, 0);;
                TAT_TRY(libtatasync_msg_send(VALUE_CHANGED, "/DTH/AUDIO/Tests/Setup/GPIO_MICVIDEO_CTRL"));
            }
#if defined HATS_AB_8520_HW
			 else if (TATAUDIO_SRC_MICRO_USB == vl_value) {
                dthaudio_micswitch = TATAUDIO_USBMIC;
                DthAudio_GpioConfig(TATAUDIO_GPIO_MICCTRL_DIR, TATAUDIO_GPIO_MICCTRL_OUT, TATAUDIO_GPIO_MICCTRL_PUD,
                                    TATAUDIO_GPIO_MICCTRL_OFFSET_IN_REGISTER, 1, 0, 0);
                TAT_TRY(libtatasync_msg_send(VALUE_CHANGED, "/DTH/AUDIO/Tests/Setup/GPIO_MIC_CTRL"));

                dthaudio_avconnector = TATAUDIO_AVCONN_AUDIO;
                DthAudio_GpioConfig(TATAUDIO_GPIO_VIDEOCTRL_DIR, TATAUDIO_GPIO_VIDEOCTRL_OUT, TATAUDIO_GPIO_VIDEOCTRL_PUD,
                                    TATAUDIO_GPIO_VIDEOCTRL_OFFSET_IN_REGISTER, 1, 1, 0);;
                TAT_TRY(libtatasync_msg_send(VALUE_CHANGED, "/DTH/AUDIO/Tests/Setup/GPIO_MICVIDEO_CTRL"));
            }
#endif
        }
        break;


    case TATAUDIO_SINK:

        VERIFY_DTH_TYPE(elem, DTH_TYPE_U32);

        VERIFY_ENUM(vl_value, TATAUDIO_ENUM_SINK_MAX);

        if (TAT_LAST_OK()) {
            vl_audioerr = SetSink(AUDIO_DEVICE_0, (e_HatsAudioOutput_t) Dthaudio_codec_sink_tab[vl_value]);
            if (HATS_AUDIO_NO_ERROR == vl_audioerr) {
                dthaudio_sink = vl_value;
                SYSLOG(LOG_INFO, "Audio sink set to %u", dthaudio_sink);

            } else {
                TAT_SET_LAST_ERR(hats_audio_err_to_dth(vl_audioerr));
                SYSLOG(LOG_ERR, "Failed to set audio sink");
            }
        }
        break;



    case TATAUDIO_AVCONNECTOR:
        VERIFY_DTH_TYPE(elem, DTH_TYPE_U32);
        VERIFY_ENUM(vl_value, TATAUDIO_AVCONN_VIDEO);

        if (TAT_LAST_OK()) {
            if (TATAUDIO_AVCONN_VIDEO == vl_value) {
                DthAudio_GpioConfig(TATAUDIO_GPIO_VIDEOCTRL_DIR, TATAUDIO_GPIO_VIDEOCTRL_OUT, TATAUDIO_GPIO_VIDEOCTRL_PUD,
                                    TATAUDIO_GPIO_VIDEOCTRL_OFFSET_IN_REGISTER, 1, 0, 0);

                SYSLOG(LOG_INFO, "AV connector set to VIDEO_SOURCE");
            } else if (TATAUDIO_AVCONN_AUDIO == vl_value) {
                DthAudio_GpioConfig(TATAUDIO_GPIO_VIDEOCTRL_DIR, TATAUDIO_GPIO_VIDEOCTRL_OUT, TATAUDIO_GPIO_VIDEOCTRL_PUD,
                                    TATAUDIO_GPIO_VIDEOCTRL_OFFSET_IN_REGISTER, 1, 1, 0);;

                SYSLOG(LOG_INFO, "AV connector set to AUDIO_SOURCE");
            }
            if (TAT_LAST_OK()) {
                dthaudio_avconnector = vl_value;
            } else {
                SYSLOG(LOG_ERR, "Failed to set AV connector");
            }
        }
        break;

#if defined HATS_AB_8520_HW
    case TATAUDIO_JACK_USB_MIC_SWITCH:
        VERIFY_DTH_TYPE(elem, DTH_TYPE_U32);
        VERIFY_ENUM(vl_value, TATAUDIO_USBMIC);
        if (TAT_LAST_OK()) {
            if (TATAUDIO_JACKMIC == vl_value) {
                DthAudio_GpioConfig(TATAUDIO_GPIO_MICCTRL_DIR, TATAUDIO_GPIO_MICCTRL_OUT, TATAUDIO_GPIO_MICCTRL_PUD,
                                    TATAUDIO_GPIO_MICCTRL_OFFSET_IN_REGISTER, 1, 1, 0);

                SYSLOG(LOG_INFO, "Mic switch set to JACK");
            } else if (TATAUDIO_USBMIC == vl_value) {
                DthAudio_GpioConfig(TATAUDIO_GPIO_MICCTRL_DIR, TATAUDIO_GPIO_MICCTRL_OUT, TATAUDIO_GPIO_MICCTRL_PUD,
                                    TATAUDIO_GPIO_MICCTRL_OFFSET_IN_REGISTER, 1, 0, 0);;

                SYSLOG(LOG_INFO, "Mic switch set to USB");
            }
            if (TAT_LAST_OK()) {
                dthaudio_micswitch = vl_value;
            } else {
                SYSLOG(LOG_ERR, "Failed to set Mic switch");
            }
        }
        break;

#endif

    default:
        TAT_SET_LAST_ERR(TAT_BAD_REQ);
    }

    RETURN_ERR();
}
int main()
{
#if 0
  int pause;
	unsigned int status;
  //unsigned char data;	
  
  system("rm -f test.wav");
  status = ConvWavFile("/usr/share/sounds/alsa/Front_Left.wav","test_20b.wav");
/*******************************************************************************/
//test1:
  printf("\n\n*************** record  & playback *******************");
  pause = getchar();
  if( pause == 'p') {pause = getchar();goto test2;}
  
  printf("\n\n#########start a simple record on mic1B");
  status = SetSrc(AUDIO_DEVICE_0,CODEC_SRC_MICROPHONE_1B);
  status = StartPCMTransfer(AUDIO_DEVICE_0,CODEC_CAPTURE,NORMAL_CAPTURE_MODE,"test.wav");
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n#########stop a simple record on default organ");
  status = StopPCMTransfer(AUDIO_DEVICE_0,CODEC_CAPTURE);
  printf("\n STATUS must be 0: %d",status);

  pause = getchar();
  printf("\n\n#########start playback of recorded file in 20 bits,on default organ");
  status = ConvWavFile("test.wav","test_2.wav");
  status = StartPCMTransfer(AUDIO_DEVICE_0,CODEC_PLAYBACK,NORMAL_PLAYBACK_MODE,"test_2.wav");
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n#########stop playback on default organ ");
  status = StopPCMTransfer(AUDIO_DEVICE_0,CODEC_PLAYBACK);
  printf("\n STATUS must be 0: %d",status);
/*******************************************************************************/
test2:
  printf("\n\n*************** playback on HDMI *******************");
  pause = getchar();
  printf("\ngetchar = %c",pause);
  if( pause == 'p') {pause = getchar();goto test3;}
  printf("\n\n#########start a simple playback on HDMI organ");
  status = StartPCMTransfer(AUDIO_DEVICE_HDMI,CODEC_PLAYBACK,NORMAL_PLAYBACK_MODE,"test_20b.wav");
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n#########stop playback on HDMI ");
  status = StopPCMTransfer(AUDIO_DEVICE_HDMI,CODEC_PLAYBACK);
  printf("\n STATUS must be 0: %d",status);

/*******************************************************************************/
test3:
  printf("\n\n*************** 2 playback *******************");
  pause = getchar();
  if( pause == 'p') {pause = getchar();goto test4;}
  printf("\n\n#########start 2 playbacks \n");
  status = StartPCMTransfer(AUDIO_DEVICE_0,CODEC_PLAYBACK,NORMAL_PLAYBACK_MODE,"test_20b.wav");
  printf("\n STATUS must be 0: %d",status);
  status = StartPCMTransfer(AUDIO_DEVICE_0,CODEC_PLAYBACK,NORMAL_PLAYBACK_MODE,"test_20b.wav");
  printf("\n STATUS must be an error: %d",status);
  pause = getchar();
  printf("\n\n#########stop playback ");
  status =StopPCMTransfer(AUDIO_DEVICE_0,CODEC_PLAYBACK);
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();

  printf("\n\n#########start 2 captures ");
  status = StartPCMTransfer(AUDIO_DEVICE_0,CODEC_CAPTURE,NORMAL_CAPTURE_MODE,"test_20b.wav");
  printf("\n STATUS must be 0: %d",status);
  status = StartPCMTransfer(AUDIO_DEVICE_0,CODEC_CAPTURE,NORMAL_CAPTURE_MODE,"test_20b.wav");
  printf("\n STATUS must not be 0: %d",status);
  pause = getchar();
  printf("\n\n#########stop capture ");
  status =StopPCMTransfer(AUDIO_DEVICE_0,CODEC_CAPTURE);
  printf("\n STATUS must be 0: %d",status);


/*******************************************************************************/
test4:
  printf("\n\n*************** loops *******************");
  pause = getchar();
  if( pause == 'p') {pause = getchar();goto test5;}
  printf("\n\n#########start a analog loop");
  status = StartPCMTransfer(AUDIO_DEVICE_0,CODEC_CAPTURE,ANALOG_LOOPBACK_MODE,"test_20b.wav");
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n#########stop analog loop ");
  status = StopPCMTransfer(AUDIO_DEVICE_0,CODEC_CAPTURE);
  printf("\n STATUS must be 0: %d",status);

  pause = getchar();
  printf("\n\n#########start a digital loop");
  status = StartPCMTransfer(AUDIO_DEVICE_0,CODEC_PLAYBACK,DIGITAL_LOOPBACK_MODE,"test_20b.wav");
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n#########stop digital loop ");
  status = StopPCMTransfer(AUDIO_DEVICE_0,CODEC_PLAYBACK);
  printf("\n STATUS must be 0: %d",status);

/*******************************************************************************/
test5:
  printf("\n\n*************** FM loops *******************");
  pause = getchar();
  if( pause == 'p') {pause = getchar();goto test6;}
  printf("\n\n######### start digital loopback from FM_RX to Headset");
  SetSrc(AUDIO_DEVICE_0,CODEC_SRC_FM_RX);
  status = SetSink(AUDIO_DEVICE_0,CODEC_DEST_HEADSET);
  status = StartPCMTransfer(AUDIO_DEVICE_0,CODEC_PLAYBACK,DIGITAL_LOOPBACK_MODE,"test_20b.wav");
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n######### stop digital loopback from FM_RX to Headset");
  status = StopPCMTransfer(AUDIO_DEVICE_0,CODEC_PLAYBACK);
  pause = getchar();

  printf("\n\n######### start digital loopback from dmic12 to FM_TX");
  SetSrc(AUDIO_DEVICE_0,CODEC_SRC_D_MICROPHONE_12);
  status = SetSink(AUDIO_DEVICE_0,CODEC_DEST_FM_TX);
  status = StartPCMTransfer(AUDIO_DEVICE_0,CODEC_PLAYBACK,DIGITAL_LOOPBACK_MODE,"test_20b.wav");
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n######### stop digital loopback from dmic12 to FM_TX");
  status = StopPCMTransfer(AUDIO_DEVICE_0,CODEC_PLAYBACK);

/*******************************************************************************/
test6:
  printf("\n\n*************** path management *******************");
  pause = getchar();
  if( pause == 'p') {pause = getchar();goto test7;}
  printf("\n\n#########sink Organ change");
  status = StartPCMTransfer(AUDIO_DEVICE_0,CODEC_PLAYBACK,DIGITAL_LOOPBACK_MODE,"test_20b.wav");
  printf("\n\n#########change to CODEC_DEST_EARPIECE");
  status = SetSink(AUDIO_DEVICE_0,CODEC_DEST_EARPIECE);
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n#########change to CODEC_DEST_HANDSFREE");
  status = SetSink(AUDIO_DEVICE_0,CODEC_DEST_HANDSFREE);
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n#########change to CODEC_DEST_VIBRATOR1");
  status = SetSink(AUDIO_DEVICE_0,CODEC_DEST_VIBRATOR1);
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n#########change to CODEC_DEST_VIBRATOR2");
  status = SetSink(AUDIO_DEVICE_0,CODEC_DEST_VIBRATOR2);
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n#########change to CODEC_DEST_HEADSET");
  status = SetSink(AUDIO_DEVICE_0,CODEC_DEST_HEADSET);
  printf("\n STATUS must be 0: %d",status);
  status = StopPCMTransfer(AUDIO_DEVICE_0,CODEC_PLAYBACK);
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n#########sink Organ change");
  status = StartPCMTransfer(AUDIO_DEVICE_0,CODEC_PLAYBACK,DIGITAL_LOOPBACK_MODE,"test_20b.wav");
  printf("\n\n#########change to CODEC_SRC_LINEIN");
  status = SetSrc(AUDIO_DEVICE_0,CODEC_SRC_LINEIN);
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n#########change to CODEC_SRC_MICROPHONE_1B");
  status = SetSrc(AUDIO_DEVICE_0,CODEC_SRC_MICROPHONE_1B);
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n#########change to CODEC_SRC_MICROPHONE_2");
  status = SetSrc(AUDIO_DEVICE_0,CODEC_SRC_MICROPHONE_2);
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n#########change to CODEC_SRC_D_MICROPHONE_12");
  status = SetSrc(AUDIO_DEVICE_0,CODEC_SRC_D_MICROPHONE_12);
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n#########change to CODEC_SRC_D_MICROPHONE_34");
  status = SetSrc(AUDIO_DEVICE_0,CODEC_SRC_D_MICROPHONE_34);
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n#########change to CODEC_SRC_D_MICROPHONE_56");
  status = SetSrc(AUDIO_DEVICE_0,CODEC_SRC_D_MICROPHONE_56);
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  printf("\n\n#########change to CODEC_SRC_MICROPHONE_1A");
  status = SetSrc(AUDIO_DEVICE_0,CODEC_SRC_MICROPHONE_1A);
  printf("\n STATUS must be 0: %d",status);
  pause = getchar();
  status = StopPCMTransfer(AUDIO_DEVICE_0,CODEC_PLAYBACK);

/*******************************************************************************/
test7:

/*  status = SetVolume(AUDIO_DEVICE_0,CODEC_PLAYBACK,10,20);
  printf("\n STATUS must be 0: %d",status);
	pause = getchar();
  status = SetVolume(AUDIO_DEVICE_0,CODEC_CAPTURE,0,100);
  printf("\n STATUS must be 0: %d",status);
  status = SetVolume(AUDIO_DEVICE_0,CODEC_MASTER,0,100);
  printf("\n STATUS must be 0: %d",status);
  status = SetMute(AUDIO_DEVICE_0,CODEC_PLAYBACK,STREAM_MUTED);
	pause = getchar();
  printf("\n STATUS must be 0: %d",status);
  status = SetMute(AUDIO_DEVICE_0,CODEC_CAPTURE,STREAM_UNMUTED);
	pause = getchar();
  printf("\n STATUS must be 0: %d",status);
  status = SetMute(AUDIO_DEVICE_0,CODEC_MASTER,STREAM_UNMUTED);
	pause = getchar();
  printf("\n STATUS must be 0: %d",status);
  status = SetMultichannelMode(AUDIO_DEVICE_0,MULTI_CHANNEL_ENABLE);
	pause = getchar();
  printf("\n STATUS must be 0: %d",status);
  status = SetMultichannelMode(AUDIO_DEVICE_0,MULTI_CHANNEL_DISABLE);
	pause = getchar();
  printf("\n STATUS must be 0: %d",status);
*/ 

/* SPIWrite( 0x0D0C,0x80);
data =SPIRead( 0x0D0C);
data =SPIRead( 0x0D05);
data =SPIRead( 0x0D0A);
*/

  printf("\n\n*************** end tests*******************\n");
#endif

return 0;
}