verion which did not include the handling in RTService wth creating the
Json file
This commit is contained in:
@@ -2,58 +2,192 @@ import uuid
|
||||
import datetime as dt
|
||||
from marshmallow import Schema, fields, post_load
|
||||
|
||||
from vrpmdvcreatemoncmd import VRPMDV_CreateMonCmd
|
||||
from vrpmdvcreatemonschema import VRPMDV_CreateMonSchema
|
||||
from vrpmdvdeletemoncmd import VRPMDV_DeleteMonCmd
|
||||
from vrpmdvdeletemonschema import VRPMDV_DeleteMonSchema
|
||||
from vrpmdvmonreq import VRPMDV_MonReq
|
||||
from extensions.rt_service import rt_service as rts
|
||||
from vrpmdvmonitoringState import VRPMDVMonitoringState
|
||||
from vrpmdvmondata import createCoproLoggingTask
|
||||
from vrpmdvntlink import trySend
|
||||
import logging
|
||||
import threading
|
||||
import time
|
||||
|
||||
import io
|
||||
import fcntl
|
||||
import mmap
|
||||
|
||||
from vrpmdvstatusmoncmd import VRPMDV_StatusMonCmd
|
||||
from vrpmdvstatusmonschema import VRPMDV_StatusMonSchema
|
||||
|
||||
|
||||
# def thread_function(name):
|
||||
|
||||
# logging.info("MonThread %s: starting", name)
|
||||
# fdesc = -1
|
||||
# rtMon = rts.RTSMonitoringTask()
|
||||
# fdesc = rtMon.openChannel('/dev/mon-datafile')
|
||||
|
||||
# # write loginfos to Buffer
|
||||
# msg = rtMon.getLogMsg()
|
||||
# for msgstr in msg:
|
||||
# logging.info(str(msgstr))
|
||||
|
||||
# while ((fdesc >= 0) && ()):
|
||||
# msg = rtMon.readChannel(fdesc)
|
||||
# # write loginfos to Buffer
|
||||
# logmsg = rtMon.getLogMsg()
|
||||
# for msgstr in logmsg:
|
||||
# logging.info(str(msgstr))
|
||||
|
||||
# logging.info(msg)
|
||||
# if (msg == 'noResult'):
|
||||
# break
|
||||
|
||||
# logging.info("MonThread %s: finishing", name)
|
||||
# rtMon.closeChannel(fdesc)
|
||||
|
||||
# if (res):
|
||||
# props = res.getMsg()
|
||||
# #props = res.getProps()
|
||||
# if (res.getResCode() == 'error'):
|
||||
# try:
|
||||
# logging.info(props)
|
||||
# # for key, value in props.items():
|
||||
# # logging.info(key+" "+ str(value))
|
||||
# except:
|
||||
# logging.info("MonThread %s: could not open the channel", name)
|
||||
# else:
|
||||
# try:
|
||||
# logging.info(props)
|
||||
# # for key, value in props.items():
|
||||
# # logging.info(key+" "+ str(value))
|
||||
# except:
|
||||
# logging.info("MonThread %s: could read fdesc of the channel", name)
|
||||
# else :
|
||||
# logging.info("MonThread %s: result = None", name)
|
||||
|
||||
|
||||
|
||||
|
||||
# class VRPMDV_MonReq:
|
||||
# def __init__(self, name , samplerate, sampleperiod, downtime, owner) :
|
||||
# self.name = name
|
||||
# self.samplerate = samplerate
|
||||
# self.sampleperiod = sampleperiod
|
||||
# self.downtime = downtime
|
||||
# self.owner = owner
|
||||
|
||||
class VRPMDV_Monitoring(VRPMDV_MonReq):
|
||||
|
||||
def __init__(self, id, name , samplerate, sampleperiod, downtime, status, owner="None", created_at=dt.datetime.now()) :
|
||||
def __init__(self, no, id, name , samplerate, sampleperiod, downtime, status, owner="None", created_at=dt.datetime.now()) :
|
||||
self.no = no
|
||||
self.id = id
|
||||
self.created_at = created_at
|
||||
self.rtservice = rts.RT_Service()
|
||||
self.rtMon = rts.RTSMonitoringTask()
|
||||
self.monTask = None
|
||||
self.run_thread = False
|
||||
self.fdesc = -1
|
||||
super().__init__(name, samplerate, sampleperiod, downtime, owner, status)
|
||||
|
||||
def createMonitoring(self) :
|
||||
if self.status != VRPMDVMonitoringState.OFF:
|
||||
iscreated = self.rtservice.createMonitoring(str(self.id))
|
||||
if not iscreated :
|
||||
self.status = VRPMDVMonitoringState.OFF
|
||||
return True
|
||||
return False
|
||||
|
||||
def deleteMonitoring(self) :
|
||||
isdeleted = self.rtservice.deleteMonitoring(str(self.id))
|
||||
if (isdeleted) :
|
||||
self.monstate = VRPMDVMonitoringState.OFF
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def startMonitoring(self) :
|
||||
isstarted = self.rtservice.setMonitoringState(str(self.id), VRPMDVMonitoringState.started)
|
||||
if (isstarted) :
|
||||
self.monstate = VRPMDVMonitoringState.STARTED
|
||||
return True
|
||||
return False
|
||||
#send create command to M4
|
||||
try :
|
||||
logging.basicConfig(format=format, level=logging.INFO, datefmt="%H:%M:%S")
|
||||
logging.info("MainThread: createMonOnDevice => before vrpmdCreateCmd samplerate:%d, samplerate:%d, samplerate:%d", self.samplerate, self.sampleperiod, self.downtime)
|
||||
vrpmdCreateCmd = VRPMDV_CreateMonCmd(self.samplerate, self.sampleperiod, self.downtime)
|
||||
logging.info("MainThread: createMonOnDevice => before schemaCreateCmd")
|
||||
schemaCreateCmd = VRPMDV_CreateMonSchema()
|
||||
logging.info("MainThread: try send start monitoring starting %s", schemaCreateCmd.dumps(vrpmdCreateCmd))
|
||||
res = trySend(schemaCreateCmd.dumps(vrpmdCreateCmd))
|
||||
logging.info("MainThread: try send start monitoring done %s", res)
|
||||
|
||||
# start the receiving thread
|
||||
logging.info("MainThread %s: open", str(self.id))
|
||||
# self.fdesc = self.rtMon.openChannel('/dev/mon-datafile')
|
||||
|
||||
# self.run_thread = True
|
||||
# self.monTask = threading.Thread(target=self.run, args=())
|
||||
# self.monTask.start()
|
||||
# logging.info("MainThread: strated Mon Thread %s started", self.id)
|
||||
self.status = 'started'
|
||||
return self.status
|
||||
except :
|
||||
self.status = "stopped"
|
||||
return self.status
|
||||
|
||||
def stopMonitoring(self) :
|
||||
isstopped = self.rtservice.setMonitoringState(str(self.id), VRPMDVMonitoringState.stopped)
|
||||
if (isstopped) :
|
||||
self.monstate = VRPMDVMonitoringState.STOPPED
|
||||
return True
|
||||
return False
|
||||
# isstopped = self.rtservice.setMonitoringState(str(self.id), VRPMDVMonitoringState.stopped)
|
||||
logging.basicConfig(format=format, level=logging.INFO, datefmt="%H:%M:%S")#
|
||||
logging.info("MainThread: stopping Mon Thread %s ", self.id)
|
||||
#send delete cmd to M4
|
||||
logging.info("MainThread: stop monitoring")
|
||||
|
||||
|
||||
if (self.monTask != None) :
|
||||
# set the value Runthread to fals that the thread terminate
|
||||
self.run_thread = False
|
||||
self.monTask.join(None)
|
||||
self.monTask = None
|
||||
logging.info("MonThread %s: closing fdesc=%s", str(self.id), str(self.fdesc))
|
||||
self.rtMon.closeChannel(self.fdesc)
|
||||
logging.info("MonThread %s: closed fdesc=%s", str(self.id), str(self.fdesc))
|
||||
|
||||
logging.info("MainThread: stopped Mon Thread %s ", self.id)
|
||||
|
||||
vrpmdDeleteCmd = VRPMDV_DeleteMonCmd(self.no)
|
||||
schemaDeleteCmd = VRPMDV_DeleteMonSchema()
|
||||
res = trySend(schemaDeleteCmd.dumps(vrpmdDeleteCmd))
|
||||
logging.info("MainThread: try send stop monitoring done %s", res)
|
||||
|
||||
# if (isstopped) :
|
||||
self.status = 'stopped'
|
||||
return self.status
|
||||
|
||||
def setStatus(self, status) :
|
||||
isStatusSet = self.rtservice.setMonitoringStatus(str(self.id), status)
|
||||
if (isStatusSet) :
|
||||
self.status = status
|
||||
return True
|
||||
return False
|
||||
# def setStatus(self, status) :
|
||||
# # isStatusSet = self.rtservice.setMonitoringStatus(str(self.id), status)
|
||||
# logging.info("MainThread: set status ")
|
||||
# return True
|
||||
|
||||
def run(self):
|
||||
|
||||
# logging.info("MonThread %s: starting", str(self.id))
|
||||
# fdesc = -1
|
||||
# rtMon = rts.RTSMonitoringTask()
|
||||
# fdesc = rtMon.openChannel('/dev/mon-datafile')
|
||||
|
||||
# write loginfos to Buffer
|
||||
# msg = rtMon.getLogMsg()
|
||||
# for msgstr in msg:
|
||||
# logging.info(str(msgstr))
|
||||
|
||||
count = 0;
|
||||
if (self.fdesc >= 0) :
|
||||
while (self.run_thread):
|
||||
# check if the thread is running
|
||||
# if (count == 50):
|
||||
# vrpmdStatusCmd = VRPMDV_StatusMonCmd(self.no)
|
||||
# schemaStatusCmd = VRPMDV_StatusMonSchema()
|
||||
# res = trySend(schemaStatusCmd.dumps(vrpmdStatusCmd))
|
||||
# logging.info("MainThread: try send stop monitoring done %s", res)
|
||||
# count = 0
|
||||
#count = count +1
|
||||
|
||||
msg = self.rtMon.readChannel(self.fdesc)
|
||||
logging.info("MonThread %s: running", str(self.id))
|
||||
logging.info("Result: %s", msg)
|
||||
#time.sleep(1)
|
||||
|
||||
# write loginfos to Buffer
|
||||
# logmsg = rtMon.getLogMsg()
|
||||
# for msgstr in logmsg:
|
||||
# logging.info(str(msgstr))
|
||||
|
||||
# logging.info(msg)
|
||||
# if (msg == 'noResult'):
|
||||
# break
|
||||
|
||||
# logging.info("MonThread %s: finishing", str(self.id))
|
||||
# rtMon.closeChannel(fdesc)
|
||||
logging.info("MonThread %s: finished", str(self.id))
|
||||
# msg = rtMon.getLogMsg()
|
||||
# for msgstr in msg:
|
||||
# logging.info(str(msgstr))
|
||||
else:
|
||||
logging.info("MonThread %s: opening failed fdesc <= 0", str(self.id))
|
||||
|
||||
Reference in New Issue
Block a user