X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/rsbs2/blobdiff_plain/da7751cb0539c2ecb03ff66d05904626052e06e3..038e519479ea5830d9d8bbd1fd426b07d3bb1961:/bmc/bmc.c diff --git a/bmc/bmc.c b/bmc/bmc.c index 99427f6..e3690a4 100644 --- a/bmc/bmc.c +++ b/bmc/bmc.c @@ -1,5 +1,6 @@ #include #include +#include #include #include #include "usart.h" @@ -8,38 +9,41 @@ #include "chassis.h" #include "bmc.h" +#undef SLEEP_MODE + int main(void) { - uint8_t old_SREG; - unsigned char buf[12]; + unsigned char buf[24]; unsigned int len; + set_sleep_mode(SLEEP_MODE_IDLE); + chassis_init(); usart_init(); - printf("\n"); - - i2c_init(); - - printf("Waiting for I2C...\n"); - sei(); + i2c_init(); while(1) { -#if 0 - sleep_mode(); -#endif - old_SREG = SREG; cli(); - if (i2c_done) { + while (i2c_done) { len = i2c_len; memcpy(buf, (unsigned char*)i2c_databuf, len); i2c_done = 0x00; - SREG = old_SREG; + sei(); decode_ipmb_pkt(buf, len); - } else { - SREG = old_SREG; + + cli(); } + +#ifdef SLEEP_MODE + sleep_enable(); +#endif + sei(); +#ifdef SLEEP_MODE + sleep_cpu(); + sleep_disable(); +#endif } return 0;