maya
.public
Tables
(current)
Columns
Constraints
Relationships
Orphan Tables
Anomalies
Routines
ot_rw_ecmportconf(integer)
Parameters
Name
Type
Mode
_iddevice
integer
IN
Definition
DECLARE idbus integer := 0; distance_j1708 float := 0.0; distance_j1939 float := 0.0; startdate timestamptz; enddate timestamptz; _idport integer; _portnumber integer; BEGIN enddate := now(); startdate := now() - '12 hours'::interval; SELECT coalesce(max((otros->'j1939_HiresOdometer')::float) - min((otros->'j1939_HiresOdometer')::float), max((otros->'j1939_Odometer')::float) - min((otros->'j1939_Odometer')::float)),max((otros->'j1708_Odometer')::float) - min((otros->'j1708_Odometer')::float) INTO distance_j1939,distance_j1708 FROM event_ecm WHERE senddate BETWEEN startdate AND enddate AND iddevice = _iddevice; idbus := 1; IF distance_j1939 BETWEEN 0.1 AND 1000 THEN idbus := 1; ELSIF distance_j1708 BETWEEN 0.1 AND 1000 THEN idbus := 2; END IF; SELECT p.idport,p.portnumber INTO _idport,_portnumber FROM port p JOIN serialcfg s ON s.idport = p.idport WHERE p.iddevice = _iddevice AND s.alias_port = 0; -- Does the port have a port number ? if not assign it its consecutive IF _idport IS NOT NULL AND _portnumber IS NULL THEN SELECT coalesce(max(portnumber),0) + 1 INTO _portnumber FROM port WHERE iddevice = _iddevice; UPDATE port SET portnumber = _portnumber WHERE idport = _idport; END IF; IF _idport IS NULL THEN SELECT coalesce(max(portnumber),0) + 1 INTO _portnumber FROM port WHERE iddevice = _iddevice; INSERT INTO port(idport,iddevice,portnumber) SELECT nextval('sec_port'),_iddevice,_portnumber; INSERT INTO serialcfg(idport,eventincidence,transmission,parity,stopbits,numberbits,serialport_devicetype,updateinterval,bus,alias_port,stream,enabled,lastmodifiedbyuser) SELECT currval('sec_port'),null,null,null,null,null,1,null,idbus,0,7,true,null; RETURN currval('sec_port'); ELSE UPDATE serialcfg SET bus = idbus, serialport_devicetype = 1 WHERE idport = _idport; RETURN _idport; END IF; END;