int main(void) { int i; WDTCTL = WDTPW + WDTHOLD; P1IE = 0x00; // Interrupt enable P2IE = 0x00; // 0:disable 1:enable LEDS_INIT(); LEDS_ON(); delay(DELAY); LEDS_OFF(); led_state = 0; while (1) { for (i=0; i<99; i++) { led_change(); delay(DELAY >> 2); } } }
int main(void) { int i; set_mcu_speed_xt2_mclk_8MHz_smclk_1MHz(); uart0_init(UART0_CONFIG_1MHZ_115200); LEDS_INIT(); LEDS_ON(); delay(DELAY); LEDS_OFF(); led_state = 0; while (1) { for (i=0; i<99; i++) { printf("Salam Aleikoum\n"); uart0_getchar_polling(); led_change(); } } }
int ipmi_cmd_chassis(struct ipmi_ctx *ctx_cmd) { DEBUG("ipmi_cmd_chassis\r\n"); switch (ctx_cmd->req.msg.cmd) { /* Chassis Device Commands ******************************************/ case CHASSIS_GET_CAPABILITIES: /* 0x00 */ { struct ipmi_chassis_capabilities_rsp *capa_rsp; capa_rsp = (struct ipmi_chassis_capabilities_rsp*)&ctx_cmd->rsp.data[0]; capa_rsp->capabilities_flag = 0; capa_rsp->chassis_fru_dev_addr = I2C_i2c0_ipmb_self_addr_get(); capa_rsp->sdr_dev_addr = AT24CXX_SLAVE_ADDR; capa_rsp->sel_dev_addr = AT24CXX_SLAVE_ADDR; capa_rsp->sys_dev_addr = 0; capa_rsp->bridge_dev_addr = 0; ipmi_cmd_ok(ctx_cmd, sizeof(struct ipmi_chassis_capabilities_rsp)); } break; case CHASSIS_GET_STATUS: /* 0x01 */ { struct ipmi_chassis_status_rsp *status_rsp; status_rsp = (struct ipmi_chassis_status_rsp*)&ctx_cmd->rsp.data[0]; ctx_cmd->rsp.msg.data_len = sizeof(struct ipmi_chassis_status_rsp); ctx_cmd->rsp.msg.ccode = IPMI_CC_OK; status_rsp->pow_restore_policy = chassis_power_restore_policy; status_rsp->cur_pow_state = chassis_power_state; status_rsp->last_pow_env = chassis_last_power_event; status_rsp->chassis_state = chassis_state; status_rsp->front_p_button_status = 0; ipmi_cmd_ok(ctx_cmd, sizeof(struct ipmi_chassis_status_rsp)); } break; case CHASSIS_CONTROL: /* 0x02 */ { char reqcmd = ctx_cmd->req.data[0]; switch (reqcmd & 0x0f) { case IPMI_CHASSIS_CTL_POWER_DOWN: //ctx_cmd->flags |= IPMI_CTX_NO_RESPONSE; ipmi_common_power_onoff(0); chassis_power_state_set(IPMI_CHASSIS_POW_STATE_POW_OFF); // FIXME:从芯片读取电源状态 chassis_last_power_event_set(IPMI_CHASSIS_EVN_ON_CMD); ipmi_cmd_ok(ctx_cmd, 0); break; case IPMI_CHASSIS_CTL_POWER_UP: ipmi_common_power_onoff(1); chassis_power_state_set(IPMI_CHASSIS_POW_STATE_POW_ON); // FIXME:从芯片读取电源状态 chassis_last_power_event_set(IPMI_CHASSIS_EVN_ON_CMD); ipmi_cmd_ok(ctx_cmd, 0); break; case IPMI_CHASSIS_CTL_POWER_CYCLE: case IPMI_CHASSIS_CTL_HARD_RESET: case IPMI_CHASSIS_CTL_PULSE_DIAG: case IPMI_CHASSIS_CTL_ACPI_SOFT: default: ipmi_cmd_invalid(ctx_cmd); break; } } break; case CHASSIS_IDENTIFY: /* 0x04 */ { switch (ctx_cmd->req_len) { case 0: led_change(IPMI_LED_IDENTIFY); break; case 1: led_change(ctx_cmd->req.data[0]); break; case 2: led_change(IPMI_LED_ON); break; default: ipmi_cmd_err(ctx_cmd, IPMI_CC_REQ_DATA_INV_LENGTH); return 0; } ipmi_cmd_ok(ctx_cmd, 0); } break; case CHASSIS_GET_POH_COUNTER: /* 0x0f */ { uint32_t poh; ipmi_common_get_poh(&poh); poh /= 60; ctx_cmd->rsp.data[0] = 1; ctx_cmd->rsp.data[1] = poh & 0x000000ff; ctx_cmd->rsp.data[2] = (poh & 0x0000ff00) >> 8; ctx_cmd->rsp.data[3] = (poh & 0x00ff0000) >> 16; ctx_cmd->rsp.data[4] = (poh & 0xff000000) >> 24; ipmi_cmd_ok(ctx_cmd, 5); } break; case CHASSIS_RESET: /* 0x03 */ case CHASSIS_SET_CAPABILITIES: /* 0x05 */ case CHASSIS_SET_POW_RESTORE_POLICY: /* 0x06 */ case CHASSIS_GET_RESTART_CAUSE: /* 0x07 */ case CHASSIS_SET_SYS_BOOT_OPT: /* 0x08 */ case CHASSIS_GET_SYS_BOOT_OPT: /* 0x09 */ case CHASSIS_SET_FP_BUTTON_ENABLE: /* 0x0a */ case CHASSIS_SET_POW_CYCLE_INTERVAL: /* 0x0b */ default: // response C1h for no support cmd ipmi_cmd_invalid(ctx_cmd); break; } return 0; }