バグ?K3NG CW Keyer: FEATURE_STRAIGHT_KEY_ECHO

K3NG Arduino CW Keyerで「FEATURE_STRAIGHT_KEY_ECHO」を有効化するとコンパイルエラー。

D:\k3ng_keyer\k3ng_keyer.ino:3016:15: note: suggested alternative: 'pin_straight_key'
           if (cli_straight_key_echo){display_scroll_print_char(convert_cw_number_to_ascii(decode_character));}
               ^~~~~~~~~~~~~~~~~~~~~
               pin_straight_key
exit status 1
'cli_straight_key_echo' was not declared in this scope

if文の条件判定に使われているcli_straight_key_echoがないよ、ってこと。

色々いじってみると、以下の条件でエラーが起きる。

// #define FEATURE_COMMAND_LINE_INTERFACE
#define FEATURE_MEMORIES      

#define FEATURE_STRAIGHT_KEY
#define FEATURE_PADDLE_ECHO
#define FEATURE_STRAIGHT_KEY_ECHO

問題のソースはk3ng_keyer.inoのここ。

じっと見ていると、「if defined(FEATURE_DISPLAY) && defined(FEATURE_STRAIGHT_KEY_ECHO)」の条件判定の中になぜかCLI(コマンドラインインタフェース)のフラグチェックをやっている。そのフラグ判定で真なら実行するのがディスプレイへの文字出力。CLIとは無関係でしょ?そもそもCLIは無効化しているわけだし。

// #define FEATURE_COMMAND_LINE_INTERFACE

そこで、ifを無効化(if文の中身だけを下の書き出し)。

#if defined(FEATURE_DISPLAY) && defined(FEATURE_STRAIGHT_KEY_ECHO)
	display_scroll_print_char(convert_cw_number_to_ascii(decode_character));
#endif //FEATURE_DISPLAY

このコード表示だと崩れて見づらいので、画像でも。

上に書いたとおり、ifでの判定をやめて、display_scroll_print_char( )が必ず実行されるようにしただけ。これでエラーは解消し、ストレートキーで入力した文字もエコーされた。

このトラブル、GitHubにも上がっている。

2018年2月なので四年近くになるけど、Openのまま放置さているみたい。まぁ、このスレッドの本来の話とは違って、最後のとこrで挟まれた質問だから見落とされてるのかな?ストレートキー機能を使っていなきゃ遭遇しないし、コマンドラインインタフェースを持っている場合は問題のフラグが未定義で引っかかることはない。この問題に出くわす人は少ないんだろう。

GitHubにコメントしようかと思いアカウントを作ったのだけど、ちょっと失敗してスパムアカウント扱いになってしまった。面倒なので、ブログに書いておく。

この記事のタイトルとURLをコピーする
スポンサーリンク
スポンサーリンク
OurPCB
スポンサーリンク
スポンサーリンク
スポンサーリンク