
Code for Browonout Generator box
Diff: main.cpp
- Revision:
- 7:fb8b01ec74a8
- Parent:
- 6:3f5d21480f11
- Child:
- 8:8d47dafb7f11
--- a/main.cpp Mon Feb 17 12:52:32 2020 +0000 +++ b/main.cpp Mon Feb 17 13:49:22 2020 +0000 @@ -46,12 +46,13 @@ string read_serial_input(); bool is_num_str(string str); long double get_num_input(); -void serial_mode(); +void powerOn(); +void powerOff(); void cycle_timeout(long double tOn = configData[0], long double tOff = configData[2]); void cycle_loopto(long double tOn = configData[0], long double tOff = configData[2]); - +void loop_tick (); void cycle_looptick(long double tOn = configData[0], long double tOff = configData[2]); - +void serial_mode(); //returns if the given character is a number or decimal point character @@ -222,24 +223,25 @@ return output; } +//power on call back function, as callbacks donot support functions with parameters void powerOn() { power(1); flg_loop1 = true; } + +//power off call back function, as callbacks donot support functions with parameters void powerOff() + { power(0); flg_loop0 = true; } -void powerOnTo(long double t){ - power(0); - toOn.attach(&powerOn,t); -} //powercycles the machine utilizing timouts for time keeping void cycle_timeout(long double tOn, long double tOff) + { long int t1,t2; t1 = (int)tOn*1000; @@ -264,15 +266,17 @@ } //call back function for cycle_looptick -void loop_tick (){ +void loop_tick () +{ toOn.attach(&powerOn, (configData[2]/1000) ); powerOff(); flg_loop0 = 1; } //Allows the user to set the machine to powercycle and exit the loop via serial commands -//utilizes a ticker and a timeout for time keeping -void cycle_looptick(long double tOn, long double tOff){ +//utilizes a ticker and a timeout for time keeping +void cycle_looptick(long double tOn, long double tOff) +{ long double t1,t2; bool flg_exit = false; string str; @@ -280,31 +284,22 @@ t2 = (tOff/1000); power(1); tickOff.attach(&loop_tick, t1+t2); - - while(!flg_exit){ - str = read_serial_input(); - if (str == "end"){ - tickOff.detach(); - pc.printf("loop ended\r\n"); - power(1); - flg_exit = true; - break; - }else{ - pc.printf("Unknown Command, enter \"end\" to end loop\r\n"); - str = ""; - } - - if(flg_loop0){ - pc.printf("pwr Off \r\n"); - } - - if(flg_loop1){ - pc.printf("pwr On\r\n"); - } - flg_loop0 = 0; - flg_loop1 = 0; - + while(!flg_exit) { + flg_loop0 = 0; + flg_loop1 = 0; + str = read_serial_input(); + if (str == "end") { + tickOff.detach(); + pc.printf("loop ended\r\n"); + power(1); + flg_exit = true; + break; + } else { + pc.printf("Unknown Command, enter \"end\" to end loop\r\n"); + str = ""; + } + } } @@ -338,7 +333,7 @@ } else if (str_c == "cycleto") { cycle_timeout(); - while(flg_loop0 == 0 or flg_loop1 == 0){ + while(flg_loop0 == 0 or flg_loop1 == 0) { led2 = !led2; ThisThread::sleep_for(100); } @@ -351,7 +346,7 @@ } else if (str_c == "looptick") { pc.printf("starting looptick \r\n"); cycle_looptick(); - + } else if(str_c == "newval") { // cahnges cycle time values pc.printf("enter your new on and off times(ms)\r\n"); pc.puts("Time on\r\n"); @@ -359,7 +354,7 @@ pc.puts("Time off\r\n"); configData[2] = get_num_input(); pc.printf("Data: %Lf, %Lf, %Lf\r\n",configData[0],configData[1],configData[2]); - + } else { pc.printf("Unknown command: [%s], see README for commands \r\n", str_c.c_str()); }