X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/rsbs2/blobdiff_plain/99e4226b74acd4286b735b5da275853701dcacf0..99f916c4f2f21a5e41464b3b9455f4442ce5069e:/bmc/bmc.c diff --git a/bmc/bmc.c b/bmc/bmc.c index c786032..e3690a4 100644 --- a/bmc/bmc.c +++ b/bmc/bmc.c @@ -1,32 +1,49 @@ #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) { - uint8_t pb = 0x00; - int8_t dir = 1; - volatile uint16_t i; + unsigned char buf[24]; + unsigned int len; - DDRB = 0xff; + set_sleep_mode(SLEEP_MODE_IDLE); + chassis_init(); usart_init(); - i2c_init(); - sei(); - - printf("Hallo!\n"); + i2c_init(); while(1) { - pb += dir; - PORTB = pb; - - for (i = 0; i < (pb<<5); i++) {} - - if ((pb == 0) || (pb == 0xff)) - dir = -dir; + cli(); + while (i2c_done) { + len = i2c_len; + memcpy(buf, (unsigned char*)i2c_databuf, len); + i2c_done = 0x00; + sei(); + + decode_ipmb_pkt(buf, len); + + cli(); + } + +#ifdef SLEEP_MODE + sleep_enable(); +#endif + sei(); +#ifdef SLEEP_MODE + sleep_cpu(); + sleep_disable(); +#endif } return 0;