Raspberry Pi (Raspbian) C light http server

Raspberry Pi (Raspbian) で動く 簡単な C light http サーバーを作ってみました。

同一ネットワーク上の、PCのブラウザーから、このRaspberry pi の c Http サーバーにアクセスして、サーバー上のPerl cgi, C++ cgi プログラムを直接実行して、その結果を、PCのブラウザーで確認できます。

軽量なので、Raspberry Pi で、それなりに動作します。
おまけに、CGI.cpp , CGILite.cpp ライブラリ を使えば、C++プログラムをサーバー上で、CGIとして実行できるので、
ブラウザーを使った、クライアント&サーバープログラムを容易に開発できます。

C++であれば、Raspi のポート操作も簡単にできます。試しに、LEDチカ、I2C 温度センサーの表示など作ってみてはどうぞね!

興味のある方は、こちらからダウンロードしてください。
Ras-pi C Light http server

ESP32 esp-idf bluetooth a2dp_sink への aptx decode 実装の考察 の続き、 #8 です。

i2s_write が間に合っていないと言う事が判ったので、
i2s_write() が最速になるように、i2s_config の設定を色々試して、下記の様に変更しました。
app_main()::main.c

APTX の1フレームのデコード済データ長は、 2,688 バイト みたいなので、
同じ値にしたかったのですが、I2S DMA の最大は、1024バイトのようなので、
.dma_buf_len = 672 にしました。
.dma_buf_count は、目一杯にしたかったのですが、取り敢えず、.dma_buf_count = 20 です。

ESP32 esp-idf bluetooth a2dp_sink への aptx decode 実装の考察 の続き、 #7 です。

なんとか、APTXのデコード部分を、2つのタスクを起動して、負荷の分散を行わせる事ができました。
これで、先般の、 "Pkt dropped" の表示がでなくなりました。

概要は、btc_a2dp_sink_data_ready()::btc_a2dp_sink.c が元々ありますが、
ここから、従来は、btc_a2dp_sink_handle_inc_media_Aptx(int8_t id,tBT_SBC_HDR *p_msg)::btc_a2dp_sink.c
(注: これは、 APTX 用に、btc_a2dp_sink_handle_inc_media(int8_t id,tBT_SBC_HDR *p_msg)::btc_a2dp_sink.c を改造したもの)
を直接コールしていた流れを、
別タスクを2つを起動させて置いて、そこから、上記関数をコールさせるようにしました。
これで、受信した音楽フレームを交互に振り分けて、APTXのデコード処理以降を分散させます。

なほ、上記2つのタスクは、それぞれ、別コアでの起動にします。

さて、音の方は言うと、音楽として判るようにはなりましたが、
まだまだ、まともには聴ける音ではありません。

常に、ビーンビーンと、かそれに近い雑音が出ていて、たまに、ピチピチ(チッピング音)が出ています。
まだまだ、プログラムとして問題があるようです。

ESP32 esp-idf bluetooth a2dp_sink への aptx decode 実装の考察 の続き、 #6 です。

ESP32 esp-idf bluetooth a2dp_sink への aptx decode 実装の考察 の続き、 #5 で説明した、プログラムの修正以外にも、結構な変更があったのですが、一応それらを、全て行って、
https://github.com/pali/libopenaptx のデコードのプログラムを組み込んで、試してみました。

結論から言えば、残念ながら、上記の、 libopenaptx のプログラムでは、おんちゃんの場合は、
まともな音は出ませんでした。

一応、Windows10+Bluetoothドングルで、 APTX でのフレーム受信までは出来るようになりました。

上記、 libopenaptx のプログラムでAPTX audio データをデコードして、I2S で音出ししてみると、
殆どノイズでうるさくて、まともに音楽は出てきません。

Windows10 の IE で YouTube を開いて、音楽を聴くと、 Bluetooth でペアリングした、ESP32 に繋げた I2S DAC ( https://www.switch-science.com/catalog/3572/ ) のヘッドホーンからは、それらしい音は出てきますが、ノイズの方が大きくて、まともには聴けません。

残念!!

最近のMSN の記事には、ウイルスに感染されたページが本当に多い。

普段通りに記事を見ていると、一日に一回は、必ず、 "Windowsシステムの修復が必要です。" とか言うポップアップが表示されるページにリダイレクトされる。

そのたびに、ブラウザーのプロセスを止めて対応しないといけない。

MSNの管理者は、なぜほったらかしにしているのだろうか?
記事を登録している所が、ハッキングされているのに、
何も対応しないのだろうか?

ESP32 esp-idf bluetooth a2dp_sink への aptx decode 実装の考察 の続き、 #5 です。

その後、あちこち、DEBUG表示を行って、調べてみました。
AVDTP(AUDIO/VIDEO DISTRIBUTION TRANPORT PROTOCOL SPECIFICATION) や、GAP(Generic Audio/Video Distribution Profile) 上の、
Idle -> Cofigured -> Open に至る部分が、下記のようです。

ESP32 esp-idf bluetooth a2dp_sink への aptx decode 実装の考察 の続き、 #4 です。

A2DP aptx,aptx-hd のプロフィールのスペックは、 インターネットで探してみましたが、
結局見つかりませんでした。

注) その後、https://docs.microsoft.com/ja-jp/windows-hardware/drivers/bluetooth/bluetooth-profile-drivers-overview を見ていたら、 Details of the Bluetooth protocol are available on the Bluetooth website. があったので、見てみると、https://www.bluetooth.com/ja-jp/specifications/profiles-overview に A2DP の仕様書をみつけました。
Version1.3 から、Non-A2DP codecs (Vendor-Specific A2DP codecs) が加わったみたいです。 

しかし、Andoroid Developer の Fluoride Bluetooth stack に、A2DP の SBC,APTX,APTX-HD,LDAC
のプロファイル処理のサンプルがあったので、参考にしてみます。
Fluoride Bluetooth stack は、Andoriod Ver. 6 あたりから、Bluedroid に代わって採用されたBluetooth スタックとの事です。

ESP32 esp-idf bluetooth a2dp_sink への aptx decode 実装の考察 の続き、 #3 です。

まだ、Bluetooth の a2dp aptx のソース側のハードが揃わないので、取り敢えず、現状の アンドロイド Version 5 でのログを集めてみました。
手順は、先に ESP32 a2dp_sink (SBC版) を立ち上げておきます。

次に、Andoriod スマホ を起動させた時のログ

ESP32 esp-idf bluetooth a2dp_sink への aptx decode 実装の考察 の続き、 #2 です。

それでは、SBC データのデコード場所は、と言うと、
どうやら、 esp-idf/components/bt/bludroid/external/sbc/decoder/src/decoder-sbc.c の
OI_CODEC_SBC_DecodeFrame() ようです。
注) これ以降は、esp-idf/components/bt は, bt と表記します。

bt/bludroid/external/sbc/decoder/src/decoder-sbc.c

esp-idf examples の bluetooth/a2sp_sink へ aptx decode を組み込めるか、ソースを追って考察してみました。

先ず、i2s_write() を実行している所はと言うと、bt_app_av.c の bt_app_a2d_data_cb() の中で、
i2s_write() をコールしているようです。

bt_app_av.c

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

アイテム

  • esp32-gysfdmaxb-server_2018.10.6.jpg
  • ESP32_gysfdmaxb_Server_resp-181005-1.jpg
  • esp32_gps-view-181005-1.jpg
  • ESP-WROOM-02-G`PS-2017.10.21-1l.jpg
  • PIC32MX_hid_basic_moouse_bredboard2_2017.10.15.jpg
  • PIC32MX_hid_basic_moouse_bredboard1_2017.10.15.jpg
  • PIC32MX hid_basic_mouse_usart_pps-output-settings_2017_10_14.jpg
  • PIC32MX hid_basic_mouse_usart_pps-input-settings_2017_10_14.jpg
  • PIC32MX hid_basic_mouse_usart_pin-table_2017_10_12.jpg
  • PIC32MX hid_basic_mouse_usart_pin-diagram_2017_10_12.jpg

ウェブページ

サイトナビ