sw_error_t sw_uk_exec(a_uint32_t api_id, ...) { a_uint32_t value[SW_MAX_API_PARAM] = { 0 }; a_uint32_t rtn = 0, i; va_list arg_ptr; a_uint32_t nr_param = 0; if((nr_param = sw_api_param_nums(api_id)) == 0) { return SW_NOT_SUPPORTED; } value[0] = api_id; value[1] = (a_uint32_t)&rtn; va_start(arg_ptr, api_id); for (i = 0; i < nr_param; i++) { value[i + 2] = va_arg(arg_ptr, a_uint32_t); } va_end(arg_ptr); if (SW_OK != sw_uk_if(value)) { return SW_FAIL; } return rtn; }
sw_error_t sw_api_get(sw_api_t *sw_api) { if(!sw_api) return SW_FAIL; if ((sw_api->api_fp = sw_api_func_find(sw_api->api_id)) == NULL) return SW_NOT_SUPPORTED; if ((sw_api->api_pp = sw_api_param_find(sw_api->api_id)) == NULL) return SW_NOT_SUPPORTED; if((sw_api->api_nr = sw_api_param_nums(sw_api->api_id)) == 0) return SW_NOT_SUPPORTED; return SW_OK; }