def __setAddr( self ): txMsg = CanMsg( self.canBus, self.canId, True ) print( ' > sending: Request SET ADDR command' ) data = bytearray( ) data.append( self.boardId ) # Board-ID data.append( 0x00|0x02 ) # Type = Request, Command = Set Address data.append( self.msgNumber ) # iterates to spot missing messages data.append( 0x80 ) # SOB = 1, Following Msg Count = 0 data.append( 0x00 ) # start at the 1st flash page data.append( 0x00 ) data.append( 0x00 ) # beginning of the page data.append( 0x00 ) txMsg.setData( data ) print( ' data: boardId = 0x%02x' % self.boardId ) print( ' data: msgType = 0x%02x' % (0x00|0x02) ) print( ' data: msgNum =', self.msgNumber ) print( ' data: SOB=%d, fMsgCount=%d' % (1, 0) ) print( ' data: flashPage =', self.flashPage ) print( ' data: pageBufferPosition =', self.bufferPosition ) self.msgNumber = self.msgNumber + 1 ok = txMsg.send( ) if ok == False: print( 'ERROR: Cannot send msg' ) return False else: return True
def __sendStartApp( self ): print( ' > sending: command to start application' ) txMsg = CanMsg( self.canBus, self.canId, True ) sob = 0x80 self.fMsgCounter = 0 data = bytearray( ) data.append( self.boardId ) # Board-ID data.append( (0x00|0x04) ) # Type = Request, Command = START_APP data.append( self.msgNumber ) # iterates to spot missing messages data.append( (sob|self.fMsgCounter ) ) txMsg.setData( data ) ok = txMsg.send( ) if( ok == True ): return True else: print( 'ERROR: Cannot send msg' ) return resp.ERROR
def __requestIdentify( self ): txMsg = CanMsg( self.canBus, self.canId, True ) print( ' > sending: Request to get Identification' ) data = bytearray( ) data.append( self.boardId ) # Board-ID data.append( 0x01 ) # Type = Request, Command = Identify data.append( self.msgNumber ) # iterates to spot missing messages data.append( 0x80 ) # SOB = 1, Following Msg Count = 0 txMsg.setData( data ) print( ' data: boardId = 0x%02x' % self.boardId ) print( ' data: msgType = 0x%02x' % (0x00|0x02) ) print( ' data: msgNum =', self.msgNumber ) print( ' data: SOB=%d, fMsgCount=%d' % (1, 0) ) self.msgNumber = self.msgNumber + 1 ok = txMsg.send( ) if ok == False: print( 'ERROR: Cannot send msg' ) return False else: return True
def __sendPayloadData( self ): print( ' > sending: payload data for flashing' ) txMsg = CanMsg( self.canBus, self.canId, True ) if( self.fMsgCounter == 0 ): self.fMsgCounter = int(self.pageSize/4) sob = 0x80 else: sob = 0x00 self.fMsgCounter = self.fMsgCounter -1 data = bytearray( ) data.append( self.boardId ) # Board-ID data.append( (0x00|0x03) ) # Type = Request, Command = DATA data.append( self.msgNumber ) # iterates to spot missing messages data.append( (sob|self.fMsgCounter ) ) if( (len(self.fileData)-1) < self.positionInFile ): data.append( 0xFF ) else: data.append( self.fileData[self.positionInFile] ) self.positionInFile += 1 if( (len(self.fileData)-1) < self.positionInFile ): data.append( 0xFF ) else: data.append( self.fileData[self.positionInFile] ) self.positionInFile += 1 if( (len(self.fileData)-1) < self.positionInFile ): data.append( 0xFF ) else: data.append( self.fileData[self.positionInFile] ) self.positionInFile += 1 if( (len(self.fileData)-1) < self.positionInFile ): data.append( 0xFF ) else: data.append( self.fileData[self.positionInFile] ) self.positionInFile += 1 txMsg.setData( data ) print( ' data: boardId = 0x%02x' % self.boardId ) print( ' data: msgType = 0x%02x' % (0x00|0x03) ) print( ' data: msgNum =', self.msgNumber ) print( ' data: SOB=%d, fMsgCount=%d' % ((sob>>7), self.fMsgCounter ) ) print( ' data: [0x%02x][0x%02x][0x%02x][0x%02x]' % (data[4], data[5], data[6], data[7]) ) print( ' data: dataLeft =', len(self.fileData) - self.positionInFile ) #self.positionInFile = self.positionInFile +4 self.msgNumber = self.msgNumber +1 # manually make the counter wrap if self.msgNumber > 255: self.msgNumber = 0 # TODO: check where to go next. In case of counte=0 check for response ok = txMsg.send( ) if( ok == True ): if( self.fMsgCounter == 0 ): return resp.END_OF_PAGE else: return resp.NOT_END_OF_PAGE else: print( 'ERROR: Cannot send msg' ) return resp.ERROR