
INCLUDE("\"i2c_subsystem.h\"");

#ifndef INHNO_TWI
#define INHNO_TWI INHNO_TWI0
#endif

ATT_INI({ 
        TA_NULL,                /* 高級言語でインターフェースする */
        0,                      /* イニシャライザに渡すパラメタ。0はTWI0 */
        i2c_master_initialize       /* イニシャライザ本体 */
        });


        
    /* I2C0の割り込みハンドラを登録する */

DEF_INH(
        INHNO_TWI, 
            { 
            TA_HLNG, 
            i2c0_master_handler 
            }
        );

            
    /* I2Cサブシステムの排他利用のためのセマフォ */
CRE_SEM (SEM_I2C0_BLOCK, 
            { 
                TA_TPRI,    /* タスク優先順位に基づいてセマフォを奪い合う。 */
                1,          /* 初期状態で資源数は1。すなわち、最初に排他領域を獲得しようとしたタスクは、待ちなしに獲得できる。 */
                1           /* 最大返却資源数は1。これは PV セマフォによる排他処理を行う場合の普通の値。 */ 
            }
        );

        
    /* I2Cサブシステムの割り込み通知用のためのセマフォ。割り込みハンドラは、依頼された送受信が完了したらこのセマフォをシグナルする */
CRE_SEM (SEM_I2C0_SIGNAL, 
            { 
                TA_TPRI,    /* タスク優先順位に基づいてセマフォを奪い合う。 */
                0,          /* 初期状態で資源数は0。すなわち、割り込みによる送受信完了待ちのタスクは、必ず最初に待ち状態になる。 */
                1           /* 最大返却資源数は1。割り込みハンドラがタスクの依頼なしに送受を完了することはないから。 */ 
            }
        );
            
            
            
