Hardware Reference
In-Depth Information
210 /*
211 * Main program :
212 */
213 int
214 main(int argc,char **argv) {
215 FILE *pipe;
216 char buf[64];
217 float pct, total;
218 int n, m = 100;
219 float f = 1000.0;
220
221 if ( argc > 1 )
222 n = atoi(argv[1]);
223 if ( argc > 2 )
224 m = atoi(argv[2]);
225 if ( argc > 3 )
226 f = atof(argv[3]);
227 if ( argc > 1 ) {
228 if ( n > m || n < 1 || m < 1 || f < 586.0 || f > 19200000.0 ) {
229 fprintf(stderr,"Value error: N=%d , M=%d , F=%.1f \n",n,m,f);
230 return 1;
231 }
232 }
233
234 pwm_init();
235
236 if ( argc > 1 ) {
237 /* Start PWM */
238 pwm_frequency(f);
239 pwm_ratio(n,m);
240 printf("PWM set for %d/%d, frequency %.1f \n",n,m,f);
241 } else {
242 /* Run CPU Meter */
243 puts("CPU Meter Mode : ");
244 for (;;) {
245 pipe = popen("ps −eo pcpu | sed 1d","r");
246 for ( total =0.0; fgets(buf,sizeof buf,pipe); ) {
247 sscanf(buf,"%f",&pct);
248 total += pct;
249 }
250 pclose(pipe);
251 printf("\r%.1f%%",total);
252 fflush(stdout);
253 pwm_ratio(total,100);
254 usleep(300000);
255 }
256 }
257
Search WWH ::




Custom Search