int HTMLScript::SetProperty(HTMLAttributeType property, WEBC_CHAR* value, HTMLDocument* document, int call_base) { if (document == 0) { document = GetDocument(); } switch (property) { case HTML_ATTRIB_CHARSET: mCharset = webc_charset_lookup(value); return (1); case HTML_ATTRIB_NAME: SetName(value); return (1); case HTML_ATTRIB_SRC: SetSrc(value); return (1); default: break; } if (call_base) { return (HTMLElement::SetProperty(property, value, document, call_base)); } return (0); }
/** @brief エフェクトを表示する。 */ void TextureObject2D_Src() { // aceを初期化する asd::Engine::Initialize(asd::ToAString("TextureObject2D_Src").c_str(), 640, 480, asd::EngineOption()); auto obj2 = std::make_shared<asd::TextureObject2D>(); { auto tex2 = asd::Engine::GetGraphics()->CreateTexture2D(asd::ToAString("Data/Texture/Character.png").c_str()); obj2->SetTexture(tex2); obj2->SetPosition(asd::Vector2DF(500, 50)); asd::Engine::AddObject2D(obj2); } //クリッピング元画像 { auto obj4 = std::make_shared<asd::TextureObject2D>(); auto tex4 = asd::Engine::GetGraphics()->CreateTexture2D(asd::ToAString("Data/Texture/Character.png").c_str()); obj4->SetTexture(tex4); obj4->SetPosition(asd::Vector2DF(50, 50)); asd::Engine::AddObject2D(obj4); } int count = 0; int index = 0; // aceが進行可能かチェックする。 while (asd::Engine::DoEvents()) { int xi = index % 3; int yi = (index / 3) % 4; //テクスチャの切り出し範囲を指定する。 obj2->SetSrc(asd::RectF(32 * xi, 32 * yi, 32, 32)); if (count % 5 == 0) { index = (++index) % 12; } ++count; // aceを更新する。 asd::Engine::Update(); } // aceを終了する。 asd::Engine::Terminate(); }
DefaultEntry::DefaultEntry( const string_t& name, const Json::Value& convert ): Entry(name, DefaultEntry_Type) { for ( size_t idx = 0; idx < convert.size(); ++idx ) { const string_t src = convert[idx]["src"].asString(); const string_t type_conversion = convert[idx]["type"].asString(); if ( type_conversion == _STR("direct") ) { SetSrc(src); } } }
/** @brief カメラを用いた描画空間の一部を切り取って描画するサンプルを表示する。 */ void CameraObject2D_Basic() { // Altseedを初期化する。 asd::Engine::Initialize(asd::ToAString("CameraObject2D_Basic").c_str(), 640, 480, asd::EngineOption()); // 画像を読み込む。 auto tex0 = asd::Engine::GetGraphics()->CreateTexture2D(asd::ToAString("Data/Texture/Picture1.png").c_str()); // テクスチャを描画するオブジェクトを設定する。 auto obj0 = std::make_shared<asd::TextureObject2D>(); obj0->SetTexture(tex0); obj0->SetPosition(asd::Vector2DF(10, 10)); obj0->SetScale(asd::Vector2DF(0.7f, 0.7f)); asd::Engine::AddObject2D(obj0); //画面全体を写すカメラを設定する。(オブジェクトをそのまま描画する。) auto entityCamera = std::make_shared<asd::CameraObject2D>(); entityCamera->SetSrc(asd::RectI(0, 0, 640, 480)); entityCamera->SetDst(asd::RectI(0, 0, 640, 480)); asd::Engine::AddObject2D(entityCamera); //テクスチャの左上から縦横150ピクセルを切り取って描画するカメラを設定する。 auto camera = std::make_shared<asd::CameraObject2D>(); camera->SetSrc(asd::RectI(10, 10, 150, 150)); camera->SetDst(asd::RectI(450, 10, 150, 150)); asd::Engine::AddObject2D(camera); // Altseedのウインドウが閉じられていないか確認する。 while (asd::Engine::DoEvents()) { // Altseedを更新する。 asd::Engine::Update(); } // Altseedを終了する。 asd::Engine::Terminate(); }
/** @brief カメラを用いて描画空間の一部を虫眼鏡のような表示で描画するサンプル。 */ void CameraObject2D_Magnify() { // Altseedを初期化する。 asd::Engine::Initialize(asd::ToAString("CameraObject2D_Magnify").c_str(), 640, 480, asd::EngineOption()); // 画像を読み込み、画像描画オブジェクトを設定する。 { auto tex0 = asd::Engine::GetGraphics()->CreateTexture2D(asd::ToAString("Data/Texture/Sample1.png").c_str()); auto obj0 = std::make_shared<asd::TextureObject2D>(); obj0->SetTexture(tex0); obj0->SetCenterPosition(asd::Vector2DF(256, 256)); obj0->SetPosition(asd::Vector2DF(320, 240)); obj0->SetScale(asd::Vector2DF(0.5f, 0.5f)); asd::Engine::AddObject2D(obj0); } //一つ目の画面全体を写すカメラ。(オブジェクトをそのまま描画する。) { auto entityCamera = std::make_shared<asd::CameraObject2D>(); entityCamera->SetSrc(asd::RectI(0, 0, 640, 480)); entityCamera->SetDst(asd::RectI(0, 0, 640, 480)); asd::Engine::AddObject2D(entityCamera); } //二つ目のマウスポインタの周辺を拡大して表示するカメラ。 auto camera2 = std::make_shared<asd::CameraObject2D>(); asd::Engine::AddObject2D(camera2); //フレーム用画像を読み込む auto frame = std::make_shared<asd::TextureObject2D>(); { auto tex = asd::Engine::GetGraphics()->CreateTexture2D(asd::ToAString("Data/Texture/Frame.png").c_str()); frame->SetTexture(tex); frame->SetCenterPosition(asd::Vector2DF(55.0f, 55.0f)); asd::Engine::AddObject2D(frame); } // Altseedのウインドウが閉じられていないか確認する。 while (asd::Engine::DoEvents()) { //マウスポインタの位置を取得する。 auto pos = asd::Engine::GetMouse()->GetPosition(); //拡大用カメラの描画元を指定する。 camera2->SetSrc(asd::RectI((int)(pos.X) - 25, (int)(pos.Y) - 25, 50, 50)); //ポインタを中心に100x100の拡大画像を表示する。 camera2->SetDst(asd::RectI((int)(pos.X) - 50, (int)(pos.Y) - 50, 100, 100)); //フレーム画像の描画中心をマウスポインタの位置に合わせる。 frame->SetPosition(pos); // Altseedを更新する。 asd::Engine::Update(); } // Altseedの終了処理をする。 asd::Engine::Terminate(); }
void HTMLSourceElement::SetItemValueText(const nsAString& aValue) { SetSrc(aValue); }
/** @brief カメラ付きでマップを表示する。 */ void MapObject2D_Camera() { // aceを初期化する asd::Engine::Initialize(asd::ToAString("MapObject2D_Camera").c_str(), 640, 480, asd::EngineOption()); //カメラを設定する。 auto camera = std::make_shared<asd::CameraObject2D>(); camera->SetSrc(asd::RectI(0, 0, 640, 480)); camera->SetDst(asd::RectI(0, 0, 640, 480)); { //マップオブジェクトを生成する。 auto mapObject = std::make_shared<asd::MapObject2D>(); auto texture = asd::Engine::GetGraphics()->CreateTexture2D(asd::ToAString("Data/Texture/Sample2.png").c_str()); //マップオブジェクトに50*50=2500個のチップを登録する。 for (int i = 0; i < 50; ++i) { for (int j = 0; j < 50; ++j) { //チップを生成する。 auto chip = std::make_shared<asd::Chip2D>(); //チップにテクスチャを設定する。 chip->SetTexture(texture); //チップの描画先を指定する。 chip->SetPosition(asd::Vector2DF(i * 40 - 1000, j * 40 - 1000)); //マップオブジェクトにチップを追加する。 mapObject->AddChip(chip); } } //レイヤーにマップオブジェクトを追加する。 asd::Engine::AddObject2D(mapObject); } //レイヤーにカメラオブジェクトを追加する。 asd::Engine::AddObject2D(camera); // aceが進行可能かチェックする。 while (asd::Engine::DoEvents()) { //カメラを移動させる auto pos = camera->GetSrc(); pos.X += 1; pos.Y += 1; pos.X %= 1000; pos.Y %= 1000; camera->SetSrc(pos); // aceを更新する。 asd::Engine::Update(); } // aceを終了する。 asd::Engine::Terminate(); }
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; }
IMG_INTERNAL IMG_VOID ChangeProgramStructToExecPred(PINTERMEDIATE_STATE psState) { USC_LIST sFuncLoopsInfoLst; FindProgramLoops(psState, &sFuncLoopsInfoLst); RestructureProgramLoopsToExecPred(psState, &sFuncLoopsInfoLst); FreeFuncLoopsInfoList(psState, &sFuncLoopsInfoLst); if (psState->uExecPredTemp != USC_UNDEF) { PINST psInst = AllocateInst(psState, IMG_NULL); SetOpcode(psState, psInst, IMOV); SetDest(psState, psInst, 0 /* uDestIdx */, USEASM_REGTYPE_TEMP, psState->uExecPredTemp, UF_REGFORMAT_F32); SetSrc(psState, psInst, 0, USEASM_REGTYPE_IMMEDIATE, 0, UF_REGFORMAT_F32); InsertInstBefore(psState, psState->psMainProg->sCfg.psEntry, psInst, psState->psMainProg->sCfg.psEntry->psBody); { SAFE_LIST_ITERATOR sIter; InstListIteratorInitialize(psState, ICNDSM, &sIter); for (; InstListIteratorContinue(&sIter); InstListIteratorNext(&sIter)) { PINST psCndsmInst; IMG_UINT32 uAdjust; psCndsmInst = InstListIteratorCurrent(&sIter); uAdjust = psCndsmInst->asArg[3].uNumber; if (AddStaticSecAttr(psState, uAdjust, NULL /* puArgType */, NULL /* puArgNum */)) { IMG_UINT32 uArgType, uArgNumber; /* Use the secondary attribute as the instruction source. */ AddStaticSecAttr(psState, uAdjust, &uArgType, &uArgNumber); SetSrc(psState, psCndsmInst, 3, uArgType, uArgNumber, UF_REGFORMAT_F32); } else { PINST psLimmInst; IMG_UINT32 uImmTemp = GetNextRegister(psState); PCODEBLOCK psLimmCodeBlock = AllocateBlock(psState, psCndsmInst->psBlock->psOwner); RedirectEdgesFromPredecessors(psState, psCndsmInst->psBlock, psLimmCodeBlock, IMG_FALSE); SetBlockUnconditional(psState, psLimmCodeBlock, psCndsmInst->psBlock); /* Add a LIMM instruction to load the immediate value into a temporary register. */ psLimmInst = AllocateInst(psState, psCndsmInst); SetOpcode(psState, psLimmInst, ILIMM); SetDestTempArg(psState, psLimmInst, 0 /* uDestIdx */, uImmTemp, UF_REGFORMAT_F32); psLimmInst->asArg[0].uType = USEASM_REGTYPE_IMMEDIATE; psLimmInst->asArg[0].uNumber = uAdjust; InsertInstBefore(psState, psLimmCodeBlock, psLimmInst, psLimmCodeBlock->psBody); /* Use the temporary register as the instruction source. */ SetSourceTempArg(psState, psCndsmInst, 3, uImmTemp, UF_REGFORMAT_F32); } } InstListIteratorFinalise(&sIter); } } return; }
/****************************************************************************** FUNCTION : AppendExecPredInst DESCRIPTION : Append a Execution Predication related instruciton to a CFG block PARAMETERS : psState - Compiler intermediate state psBlock - CFG block in which to append the instruction eOpcode - Opcode of the new instruction uCondPred - Index of the intermediate predicate controlling conditional execution (result of previous test) Not used for ICNDEND; bCondPredInv - Whether the state of the predicate should be inverted. Not used for ICNDEND. uLoopPred - Index of the intermediate predicate to indicate whether a loop is complete. Used for ICNDLT only. RETURNS : IMG_VOID OUTPUT : Nothing ******************************************************************************/ static IMG_VOID AppendExecPredInst( PINTERMEDIATE_STATE psState, PCODEBLOCK psBlock, IOPCODE eOpcode, IMG_UINT32 uCondPred, IMG_BOOL bCondPredInv, IMG_UINT32 uLoopPred, IMG_UINT32 uAdjust) { PINST psExecPredInst; IMG_UINT32 uCurrSrc = 0; if (psState->uExecPredTemp == USC_UNDEF) { psState->uExecPredTemp = GetNextRegister(psState); } /* Create and append the CNDx instruction to the block */ psExecPredInst = AllocateInst(psState, NULL); if(eOpcode == ICNDLT || eOpcode == ICNDEND) { SetOpcodeAndDestCount(psState, psExecPredInst, eOpcode, 2); } else { SetOpcodeAndDestCount(psState, psExecPredInst, eOpcode, 1); } SetDest(psState, psExecPredInst, 0 /* uDestIdx */, USEASM_REGTYPE_TEMP, psState->uExecPredTemp, UF_REGFORMAT_F32); if (eOpcode == ICNDLT) { MakePredicateDest(psState, psExecPredInst, 1, uLoopPred); } else if (eOpcode == ICNDEND) { psExecPredInst->asDest[1].uType = USC_REGTYPE_DUMMY; } SetSrc(psState, psExecPredInst, uCurrSrc, USEASM_REGTYPE_TEMP, psState->uExecPredTemp, UF_REGFORMAT_F32); uCurrSrc++; if (eOpcode != ICNDEND) { if(uCondPred != USC_PREDREG_NONE) { MakePredicateSource(psState, psExecPredInst, uCurrSrc, uCondPred); } else { psExecPredInst->asArg[uCurrSrc].uType = USEASM_REGTYPE_IMMEDIATE; psExecPredInst->asArg[uCurrSrc].uNumber = 0; } uCurrSrc++; psExecPredInst->asArg[uCurrSrc].uType = USEASM_REGTYPE_IMMEDIATE; if(bCondPredInv) { psExecPredInst->asArg[uCurrSrc].uNumber = 1; } else { psExecPredInst->asArg[uCurrSrc].uNumber = 0; } uCurrSrc++; } { psExecPredInst->asArg[uCurrSrc].uType = USEASM_REGTYPE_IMMEDIATE; if ((eOpcode == ICNDLT) || (eOpcode == ICNDSTLOOP) || (eOpcode == ICNDEFLOOP) || (eOpcode == ICNDSM)) { psExecPredInst->asArg[uCurrSrc].uNumber = uAdjust; } else { psExecPredInst->asArg[uCurrSrc].uNumber = 1; } } AppendInst(psState, psBlock, psExecPredInst); }