コード例 #1
0
ファイル: v4l2_capture.c プロジェクト: epffpe/Matlab
/* 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;
}