Repo

kjana00@gmail.com

older <-

2012-02-16 00:45:16

今朝はくもり。朝ごはんはパンとサラダとソーセージ。こう天気が良くならないと気分が上がらないんですけど。寒く感じるし。しけぽいと何か冷えるんだよな……

とりあえず昨日の続きからということで悩んでみる。昨日は初期化済フラグを見ないようにするっていうので、それ見たら抜けてるはずの状態にいないことっていうのを条件にしてみてた。でもこれだと問題がありそうな気がするわけで。例えば外部機器で通信エラーが起こってるままだと外部機器のエラー検出が始まる状態に行かないもんだからずっと待ち状態のままになるとか。

外部機器が起動しただけじゃなくて、正常な状態なら初期のエラーも消えて出力が得られるようになってるっていうのを保証するために初期化済フラグを見た上で、外部機器相手の通信が適当な回数連続で成功してるっていうのを待ち状態を抜ける条件に入れてある。外部機器のエラー検出条件でも同じ基準。で、あれこれ考えてみるに、結局のところ正常な状態なら初期化済フラグ見なくても、連続して成功した通信の回数の基準の方で十分に待ててるはずではあるんだよねという気がしてくる。っていうか、今のしきい値で言うとこれ以上待ったら待ち過ぎだろうっていう。それだけ待って駄目だったら故障系で動き出して構わないんじゃない? という感じ。

そういうことで、結局一行削除して様子を見てみた。まあ、大体良さそうな気がする。変なタイミングで動くと変にエラー解除が沢山発生したりはするようだけど。何だこれ? エラー検出と解除とでカウンタ動かしたりしてるから、検出回数以上解除が発生すると良くないことになるな。解除の方はほぼエラー表示用に LED を点滅させるフラグをオフするかどうかぐらいしかしてないから、0 以下にしないようにするだけで構わないって言えば構わないけど。

変な多重解除が見えたのは一回きりだったけど、何かの拍子で似たような状況が起こらないとも限らない。外部機器との通信でのビット化けとか。ということで、特にガードしてなかった単純なカウンタ増減にガードを付けることにする。単にガード付けるだけじゃ似たようなコード撒き散らすばかりだからマクロにして。inline 関数だと代入形式を避けられないからねぇ……型違いもあるから上限付きのカウントアップと下限付きのカウントダウンのマクロをベースにして、各型の上下限を付けたマクロを定義して、と。マクロを定義するマクロは書けないか、やっぱり。関数なら定義出来るんだけどな。

単純なカウントアップダウンについてはさくっと差し替えておしまい。サイクリックなカウンタの方もついでに同じ形に直してみたら、元が inline 関数だから同じオブジェクトになりそうなのに微妙に違ってるんでちょっと保留。多分、特に問題は無いはずなんだけど。代入だったのがインクリメントになったせいで最適化のかかり方がちょっと違う風、っていうところまで見て今日はそこまで。

帰ってのんびり。それから晩ごはんに……何だ、あれ? ホルモンミックスを軽く野菜と炒めてから、干し椎茸と昆布を浸しておいた酒と水を加えて煮込んでみたっていう感じ。炒める時に豆板醤と甜麺醤を入れておいたんで味が薄くなり過ぎたりもせず、なかなか悪くない感じの仕上がり。鍋とはちょっと違うよな……

それから WWW 見たりゲームしたり、と。再挑戦でシュロブは倒せた。やっぱり向こうが起きる前にどれだけ近付けるかが大きくものを言うわ。ナイトメア結構強いな。

older <-

goto

hint can be:

Tags

old

2007-05 -- 2006-12

ゲーム関係の古い記録

before 2005-12