X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/rsbs2/blobdiff_plain/d7bda89e596d43e5a9920269612f992e92d5ada3..f9d5c6e0b95e763fb9900e1e7cd5114bc452dfb9:/bmc/bmc.c diff --git a/bmc/bmc.c b/bmc/bmc.c index 06a3829..abe86e5 100644 --- a/bmc/bmc.c +++ b/bmc/bmc.c @@ -1,24 +1,43 @@ -#define F_CPU 1000000UL - -#include - -int main(void) -{ - uint8_t pb = 0x00; - int8_t dir = 1; - volatile uint16_t i; - - DDRB = 0xff; - - while(1) { - pb += dir; - PORTB = pb; - - for (i = 0; i < (pb<<5); i++) {} - - if ((pb == 0) || (pb == 0xff)) - dir = -dir; - } - - return 0; -} +#include +#include +#include +#include +#include +#include "usart.h" +#include "i2c.h" +#include "ipmb.h" +#include "chassis.h" +#include "bmc.h" + +int main(void) +{ + uint8_t old_SREG; + unsigned char buf[12]; + unsigned int len; + + chassis_init(); + usart_init(); + i2c_init(); + + sei(); + + while(1) { +#if 0 + sleep_mode(); +#endif + old_SREG = SREG; + cli(); + if (i2c_done) { + len = i2c_len; + memcpy(buf, (unsigned char*)i2c_databuf, len); + i2c_done = 0x00; + SREG = old_SREG; + + decode_ipmb_pkt(buf, len); + } else { + SREG = old_SREG; + } + } + + return 0; +}