Example #1
0
    def sendCommand(self, command, initialParameters = None):
        """
         Sends command to the handler
         @param command: AbstractCommand instance
         @param initialParameters: dict Initial command parameters
        """
        if not initialParameters:
            raise Exception("Empty initial parameters!")

        config = {}
        if "config" in initialParameters:
            config = initialParameters["config"]
        transport = initialParameters["transport"]

        commandData = command.getData(transport) or []
        if not isinstance(commandData, list):
            commandData = [{"message": commandData}]

        for item in commandData:
            if not isinstance(item, dict):
                item = {"message": item}
            buffer = item["message"]
            if transport == "tcp":
                self.send(buffer)
                log.debug('[%s] Command data is sent: %s',
                    self.handlerId, buffer)
            elif transport == "sms":
                data = {
                    'type': transport,
                    'message': buffer,
                    'remaining': 1
                }
                if 'address' in config:
                    data['send_to'] = config['address']
                if 'callback' in config:
                    data['callback'] = config['callback']
                if 'id_object' in config:
                    data['id_object'] = config['id_object']
                if 'id_firm' in config:
                    data['id_firm'] = config['id_firm']
                if 'from' in config:
                    data['params'] = {}
                    data['params']['from'] = config['from']
                log.debug('[%s] Sending AMQP message to [work.process]...',
                    self.handlerId)
                broker.send([data],
                    routing_key = 'n.work.work.process',
                    exchangeName = 'n.work')

        if transport == "sms":
            # immediate sending of command update message
            broker.sendAmqpAnswer(self,
                "Command was successfully received and processed")
Example #2
0
    def processProtocolPacket(self, protocolPacket):
        """
         Process naviset packet.
         @type protocolPacket: packets.Packet
         @param protocolPacket: Naviset protocol packet
        """

        self.sendAcknowledgement(protocolPacket)
        self.receiveImage(protocolPacket)

        self.isHeadPacket = False
        log.info('[%s] processProtocolPacket... isHead = %s',
            self.handlerId, self.isHeadPacket)
        if isinstance(protocolPacket, packets.PacketHead):
            log.info('[%s] HeadPack is stored.', self.handlerId)
            self.__headPacketRawData = protocolPacket.rawData
            self.uid = protocolPacket.deviceImei
            self.isHeadPacket = True

        if isinstance(protocolPacket, packets.PacketAnswer):
            log.info("[%s] Storing command answer packet: %s",
                self.handlerId, protocolPacket.__class__)
            broker.sendAmqpAnswer(self, protocolPacket)
            return

        if not isinstance(protocolPacket, packets.PacketData):
            return

        if not self.__headPacketRawData:
            self.__headPacketRawData = b''

        observerPackets = self.translate(protocolPacket)
        if len(observerPackets) == 0:
            log.info('[%s] Location packet not found. Exiting...',
                self.handlerId)
            return

        log.info(observerPackets)
        self.store(observerPackets)