X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/rsbs2/blobdiff_plain/d51930558a73dd1083b924159971d4c77df411e6..2747626560b46ae7c8d3bf167f20549e8202c2e3:/bmc/bmc.c diff --git a/bmc/bmc.c b/bmc/bmc.c index 525785e..e3690a4 100644 --- a/bmc/bmc.c +++ b/bmc/bmc.c @@ -1,28 +1,48 @@ #include -#include #include +#include +#include #include #include "usart.h" #include "i2c.h" +#include "ipmb.h" +#include "chassis.h" #include "bmc.h" +#undef SLEEP_MODE + int main(void) { - DDRB = 0xff; - PORTB = 0xff; + unsigned char buf[24]; + unsigned int len; - usart_init(); - printf("\n"); + set_sleep_mode(SLEEP_MODE_IDLE); + chassis_init(); + usart_init(); + sei(); i2c_init(); - printf("Waiting for I2C...\n"); + while(1) { + cli(); + while (i2c_done) { + len = i2c_len; + memcpy(buf, (unsigned char*)i2c_databuf, len); + i2c_done = 0x00; + sei(); - sei(); + decode_ipmb_pkt(buf, len); - while(1) { -#if 1 - sleep_mode(); + cli(); + } + +#ifdef SLEEP_MODE + sleep_enable(); +#endif + sei(); +#ifdef SLEEP_MODE + sleep_cpu(); + sleep_disable(); #endif }