#ident "$URL: svn://elmer/devel/SVN/SDDAS/trunk/libPIDF/DTNums.c $ %D% SwRI" #include #include #include "pidf_local.h" SDDAS_INT GENERIC_xNUMS (PIDF what, SDDAS_ULONG key, const SDDAS_CHAR *exten, SDDAS_INT data_type, SDDAS_INT group_num, SDDAS_INT *sen_nums) { SDDAS_INT number_tot_sensors; SDDAS_INT i; SDDAS_INT gnum; SDDAS_INT sensor_num; SDDAS_INT grp_idx = 0; SDDAS_INT ret_code; SDDAS_INT dtype; SDDAS_INT sensors_in_group [5000]; memset (sensors_in_group, -1, sizeof (sensors_in_group)); dtype = (data_type == MODE) ? data_type : SENSOR; if ((dtype != MODE) && (ret_code = ReadNewPidf (key, exten, PIDF_GROUP, group_num, NOTUSED, GRPSEN, (void *) &sensors_in_group)) == ALL_OKAY) { i = 0; while (sensors_in_group [i] != -1) { if ((ret_code = ReadNewPidf (key, exten, dtype, sensors_in_group [i], NOTUSED, what, (void *) &sensor_num)) == ALL_OKAY) { sen_nums [grp_idx] = sensor_num; grp_idx++; i++; } else return (ret_code); } } else if ((ret_code = ReadNewPidf (key, exten, dtype, NOTUSED, NOTUSED, NUMOF, (void *) &number_tot_sensors)) == ALL_OKAY) { for (i = 0; i < number_tot_sensors; i++) { if (dtype == MODE) gnum = group_num; else if ((ret_code = ReadNewPidf (key, exten, dtype, i, NOTUSED, GRPNUM, (void *) &gnum)) != ALL_OKAY) return (ret_code); if (group_num == gnum) { if ((ret_code = ReadNewPidf (key, exten, dtype, i, NOTUSED, what, (void *) &sensor_num)) == ALL_OKAY) { sen_nums [grp_idx] = sensor_num; grp_idx++; } else return (ret_code); } } } else return (ret_code); return (ALL_OKAY); } SDDAS_INT DTVidfNums (SDDAS_ULONG key, const SDDAS_CHAR *exten, SDDAS_INT data_type, SDDAS_INT group_num, SDDAS_INT *sen_nums) { return (GENERIC_xNUMS (VIDFNUM, key, exten, data_type, group_num, sen_nums)); } SDDAS_INT DTPidfNums (SDDAS_ULONG key, const SDDAS_CHAR *exten, SDDAS_INT data_type, SDDAS_INT group_num, SDDAS_INT *sen_nums) { return (GENERIC_xNUMS (PIDFNUM, key, exten, data_type, group_num, sen_nums)); }