a_uint32_t sw_api_param_nums(a_uint32_t api_id) { a_uint32_t i = 0; sw_api_param_t *p = NULL; static sw_api_param_t *savep = NULL; static a_uint32_t save = 0; p = sw_api_param_find(api_id); if (!p) { return 0; } if (p == savep) { return save; } savep = p; while (api_id == p->api_id) { p++; i++; } /*error*/ if(i >= sizeof(sw_api_param)/sizeof(sw_api_param[0])) { savep = NULL; save = 0; return 0; } save = i; return i; }
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; }