Ejemplo n.º 1
0
	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
Ejemplo n.º 2
0
	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
Ejemplo n.º 3
0
	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
Ejemplo n.º 4
0
	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