00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include <stdio.h>
00031 #include <string.h>
00032 #include <stdlib.h>
00033 #include "parser.h"
00034 #include "dallocate.h"
00035 #include "global.h"
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 void free_cfgframe_object(struct cfg_frame *cfg) {
00054
00055 int j = 0;
00056 unsigned int phn,ann,dgn,num_pmu;
00057 struct dgnames *t_dgnames,*r_dgnames;
00058 fprintf(fp_log,"Inside free_cfgframe_object()\n");
00059
00060 num_pmu = to_intconvertor(cfg->num_pmu);
00061
00062 while(j<num_pmu) {
00063
00064
00065 free(cfg->pmu[j]->stn);
00066 free(cfg->pmu[j]->idcode);
00067 free(cfg->pmu[j]->data_format);
00068 free(cfg->pmu[j]->fmt);
00069
00070
00071
00072 phn = to_intconvertor(cfg->pmu[j]->phnmr);
00073 ann = to_intconvertor(cfg->pmu[j]->annmr);
00074 dgn = to_intconvertor(cfg->pmu[j]->dgnmr);
00075
00076 if(phn != 0)
00077 free_2darray(cfg->pmu[j]->cnext->phnames,phn);
00078 if(ann != 0)
00079 free_2darray(cfg->pmu[j]->cnext->angnames,ann);
00080
00081 if(dgn != 0) {
00082 t_dgnames = cfg->pmu[j]->cnext->first;
00083
00084 while(t_dgnames != NULL) {
00085
00086 r_dgnames = t_dgnames->dg_next;
00087 free_2darray(t_dgnames->dgn,16);
00088 t_dgnames = r_dgnames;
00089
00090 }
00091 }
00092 if(phn != 0)
00093 free_2darray(cfg->pmu[j]->phunit,phn);
00094 if(ann != 0)
00095 free_2darray(cfg->pmu[j]->anunit,ann);
00096 if(dgn != 0)
00097 free_2darray(cfg->pmu[j]->dgunit,dgn);
00098
00099 free(cfg->pmu[j]->phnmr);
00100 free(cfg->pmu[j]->annmr);
00101 free(cfg->pmu[j]->dgnmr);
00102 free(cfg->pmu[j]->fnom);
00103 free(cfg->pmu[j]->cfg_cnt);
00104
00105 j++;
00106 }
00107
00108 free(cfg->framesize);
00109 free(cfg->idcode);
00110 free(cfg->soc);
00111 free(cfg->fracsec);
00112 free(cfg->time_base);
00113 free(cfg->data_rate);
00114 free(cfg->num_pmu);
00115 free(cfg);
00116
00117 }
00118
00119
00120
00121
00122
00123
00124 void free_dataframe_object(struct data_frame *df) {
00125
00126 int j = 0;
00127 fprintf(fp_log,"Inside free_dataframe_object()\n");
00128
00129
00130 while(j < df->num_pmu) {
00131
00132 if(df->dpmu[j]->stat[1] == 0x0F) {
00133
00134 free(df->dpmu[j]->stat);
00135 j++;
00136 continue;
00137 }
00138
00139 free(df->dpmu[j]->stat);
00140 free(df->dpmu[j]->freq);
00141 free(df->dpmu[j]->dfreq);
00142
00143 if(df->dpmu[j]->phnmr != 0)
00144 free_2darray(df->dpmu[j]->phasors,df->dpmu[j]->phnmr);
00145 if(df->dpmu[j]->annmr != 0)
00146 free_2darray(df->dpmu[j]->analog,df->dpmu[j]->annmr);
00147 if(df->dpmu[j]->dgnmr != 0)
00148 free_2darray(df->dpmu[j]->digital,df->dpmu[j]->dgnmr);
00149 j++;
00150 }
00151
00152 free(df->framesize);
00153 free(df->idcode);
00154 free(df->soc);
00155 free(df->fracsec);
00156 free(df);
00157 }
00158
00159
00160
00161
00162
00163
00164 void free_2darray(unsigned char** array, int n){
00165
00166 int i;
00167 for(i = 0; i < n; i++)
00168 free(array[i]);
00169 free(array);
00170 }