1 #include "dcmihandler.h" 2 #include "host-ipmid/ipmid-api.h" 3 #include <stdio.h> 4 #include <string.h> 5 #include <stdint.h> 6 7 void register_netfn_dcmi_functions() __attribute__((constructor)); 8 9 10 ipmi_ret_t ipmi_dcmi_get_power_limit(ipmi_netfn_t netfn, ipmi_cmd_t cmd, 11 ipmi_request_t request, ipmi_response_t response, 12 ipmi_data_len_t data_len, ipmi_context_t context) 13 { 14 ipmi_ret_t rc = IPMI_DCMI_CC_NO_ACTIVE_POWER_LIMIT; 15 16 // dcmi-v1-5-rev-spec.pdf 6.6.2. 17 // This is good enough for OpenBMC support for OpenPOWER based systems 18 // TODO research if more is needed 19 uint8_t data_response[] = { 0xDC, 0x00, 0x00, 0x01, 0x00, 0x00, 20 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 21 0x00, 0x01}; 22 23 24 25 printf("IPMI DCMI_GET_POWER_LEVEL\n"); 26 27 memcpy(response, data_response, sizeof(data_response)); 28 *data_len = sizeof(data_response); 29 30 return rc; 31 } 32 33 34 void register_netfn_dcmi_functions() 35 { 36 // <Get Power Limit> 37 printf("Registering NetFn:[0x%X], Cmd:[0x%X]\n",NETFUN_GRPEXT, IPMI_CMD_DCMI_GET_POWER); 38 ipmi_register_callback(NETFUN_GRPEXT, IPMI_CMD_DCMI_GET_POWER, NULL, ipmi_dcmi_get_power_limit, 39 PRIVILEGE_USER); 40 return; 41 } 42 // 956379 43