Log * makeSTATSlog() { //Log state. std::vector<SExpr> fields; fields.push_back(SExpr(CONTENT_TYPE_S, "STATS")); std::vector<SExpr> fvector = { SExpr("flags"), SExpr("serv_connected", control::serv_connected, control::flags[control::serv_connected]), SExpr("control_connected", control::control_connected, control::flags[control::control_connected]), SExpr("fileio", control::fileio, control::flags[control::fileio]), SExpr("SENSORS", control::SENSORS, control::flags[control::SENSORS]), SExpr("GUARDIAN", control::GUARDIAN, control::flags[control::GUARDIAN]), SExpr("COMM", control::COMM, control::flags[control::COMM]), SExpr("LOCATION", control::LOCATION, control::flags[control::LOCATION]), SExpr("ODOMETRY", control::ODOMETRY, control::flags[control::ODOMETRY]), SExpr("OBSERVATIONS", control::OBSERVATIONS, control::flags[control::OBSERVATIONS]), SExpr("LOCALIZATION", control::LOCALIZATION, control::flags[control::LOCALIZATION]), SExpr("BALLTRACK", control::BALLTRACK, control::flags[control::BALLTRACK]), SExpr("VISION", control::VISION, control::flags[control::VISION]), SExpr("tripoint", control::tripoint, control::flags[control::tripoint]), SExpr("thumbnail", control::thumbnail, control::flags[control::thumbnail]) }; fields.push_back(SExpr(fvector)); fields.push_back(SExpr("num_buffers", NUM_LOG_BUFFERS)); fields.push_back(SExpr("num_cores", (int) NUM_CORES)); SExpr ratios; ratios.append(SExpr("ratio")); for (int i = 0; i < NUM_LOG_BUFFERS; ++i) { ratios.append(SExpr(LOG_RATIO[i])); } fields.push_back(ratios); SExpr sizes; sizes.append(SExpr("size")); for (int i = 0; i < NUM_LOG_BUFFERS; ++i) { sizes.append(SExpr(LOG_BUFFER_SIZES[i])); } fields.push_back(sizes); time_t NOW = time(NULL); fields.push_back(SExpr("con_uptime", control::flags[control::serv_connected] ? difftime(NOW, cio_upstart) : 0)); fields.push_back(SExpr("cnc_uptime", control::flags[control::control_connected] ? difftime(NOW, cnc_upstart) : 0)); fields.push_back(SExpr("fio_uptime", control::flags[control::fileio] ? difftime(NOW, fio_upstart) : 0)); fields.push_back(SExpr("log_uptime", difftime(NOW, main_upstart))); SExpr manages; manages.append(SExpr("bufmanage")); for (int i = 0; i < NUM_LOG_BUFFERS; ++i) { manages.append(makeBufManage(i)); } fields.push_back(manages); /* This system of grabbing io state is subject to multi-threading accuracy drift. It is therefore only for estimates. */ io_state_t zerostate; bzero(&zerostate, sizeof(io_state_t)); SExpr state_total; state_total.append(SExpr("total-state")); for (int i = 0; i < NUM_LOG_BUFFERS; ++i) { state_total.append(makeBufState(&zerostate, total + i)); } fields.push_back(state_total); if (control::flags[control::fileio]) { SExpr state_file; state_file.append(SExpr("file-state")); for (int i = 0; i < NUM_LOG_BUFFERS; ++i) { state_file.append(makeBufState(fio_start + i, total + i)); } fields.push_back(state_file); } if (control::flags[control::serv_connected]) { SExpr state_serv; state_serv.append(SExpr("serv-state")); for (int i = 0; i < NUM_LOG_BUFFERS; ++i) { state_serv.append(makeBufState(cio_start + i, total + i)); } fields.push_back(state_serv); } std::vector<SExpr> contents = {SExpr(fields)}; return new Log(LOG_FIRST_ATOM_S, "makeSTATSlog()", time(NULL), LOG_VERSION, contents, ""); };
uint32_t cnc_setCameraParams(Log * arg) { size_t u = arg->data().size(); bool success = receivedParams.ParseFromString(arg->data()); if(!success) { std::cerr<<"Failed to Parse Params\n"; } else { SExpr s; SExpr h = SExpr("hflip",receivedParams.h_flip()); SExpr v = SExpr("vflip",receivedParams.v_flip()); SExpr ae = SExpr("autoexposure",receivedParams.auto_exposure()); SExpr b = SExpr("brightness",receivedParams.brightness()); SExpr c = SExpr("contrast",receivedParams.contrast()); SExpr sat = SExpr("saturation",receivedParams.saturation()); SExpr hue = SExpr("hue",receivedParams.hue()); SExpr sharp = SExpr("sharpness",receivedParams.sharpness()); SExpr gamma = SExpr("gamma",receivedParams.gamma()); SExpr awb = SExpr("auto_whitebalance",receivedParams.autowhitebalance()); SExpr expo = SExpr("exposure",receivedParams.exposure()); SExpr gain = SExpr("gain",receivedParams.gain()); SExpr wb = SExpr("white_balance",receivedParams.whitebalance()); SExpr ftb = SExpr("fade_to_black",receivedParams.fadetoblack()); s.append(h); s.append(v); s.append(ae); s.append(b); s.append(c); s.append(sat); s.append(hue); s.append(sharp); s.append(gamma); s.append(awb); s.append(expo); s.append(gain); s.append(wb); s.append(ftb); std::string stringToWrite = s.serialize(); #ifdef V5_ROBOT std::cout<<"Saving as V5"<<std::endl; if(receivedParams.whichcamera() == "TOP"){ std::cout<<"TOP Params Received"<<std::endl; std::ofstream file("/home/nao/nbites/Config/V5topCameraParams.txt"); std::cout<<stringToWrite<<std::endl; file << stringToWrite; file.close(); std::cout<<"Saving Done"<<std::endl; } else { std::cout<<"Bottom Params Received"<<std::endl; std::ofstream file("/home/nao/nbites/Config/V5bottomCameraParams.txt"); std::cout<<stringToWrite<<std::endl; file << stringToWrite; file.close(); std::cout<<"Saving Done"<<std::endl; } #else std::cout<<"Saving as V4"<<std::endl; if(receivedParams.whichcamera() == "TOP"){ std::cout<<"TOP Params Received"<<std::endl; std::ofstream file("/home/nao/nbites/Config/V4topCameraParams.txt"); file << stringToWrite; file.close(); std::cout<<"Saving Done"<<std::endl; } else { std::cout<<"Bottom Params Received"<<std::endl; std::ofstream file("/home/nao/nbites/Config/V4bottomCameraParams.txt"); file << stringToWrite; file.close(); std::cout<<"Saving Done"<<std::endl; } #endif } return 0; }