/* Simulink interface for video capture terminate function */ void MW_videoCaptureTerminate(const uint8_T *devName) { MW_videoInfo_t *h = getDeviceHandle(devName); #ifdef _MW_V4L2_DEBUG_LVL2_ printf("\nTerminate for device %s\n", devName); #endif if (h != NULL) { terminateDevice(h); } }
void terminateAll(int signum) { printf("Caught signal terminate from %s, exiting...\n",signum ? "User" : "PodController"); runing = false; for (auto& pair : Name2port){ if(pair.first != self){ cout <<pair.first <<" is terminating"<<endl; terminateDevice(pair.first); } } }
int main(int argc, char const *argv[]) { startAll(); signal(SIGINT, terminateAll); while(runing) { ProtoMessage msg = receiveProtobufMessage(name2socket["pod"]); string device = msg.dest_device(); cout << "Waiting on message " << device<< endl; if(Name2port.find(device) != Name2port.end()){ if( msg.signal() == ProtoMessage::TERMINATE) { cout <<device <<" is terminating"<<endl; terminateDevice(device); } else if (msg.signal() == ProtoMessage::RESET){ resetDevice(device); } } } google::protobuf::ShutdownProtobufLibrary(); cout <<"termination Successful!!"<<endl; return 0; }