「I2C slave simulatorを作る(2)〜メインloopを作る」のtransaction記述の中で使う順番に、あると便利な関数を列挙しておきます。
===
(1) startを待つとき使うもの
byte read_scl();
void wait_sda_fall();
(2) byte readするとき使うもの
byte read_sda();//SCL=riseを待ってSDAを取り込む。返り値は1bit
void wait_scl_rise();//read_sdaの中で使う
(3) ACKを返すとき使うもの
void write_sda(byte);//read_scl()でSCL=highのときSDAにデータを載せる
(4) 8bit read/writeのとき使うもの(2)(3)で既出
(5) 次のサイクルを判定するとき使うもの(既出)
===
以上をまとめると
===
void wait_scl_rise();
void wait_sda_fall();
byte read_scl();
byte read_sda();
void write_sda(byte);
===
ここまで