Ejemplo n.º 1
0
    def setTracks(self, tracks):        
        for track in tracks:
            lapChunk = hex(track)[:72 + (track.lapCount * 44)]
            
            response = self._querySerial(lapChunk)
            if response == '91000000' or response == '90000000':
                self.logger.info('uploaded lap information of track successfully')
            else:
                raise GB500Exception

            trackpointChunks = Utilities.chop(hex(track)[len(lapChunk):], 4152)
            for i, chunk in enumerate(trackpointChunks):
                response = self._querySerial(chunk)

                if response == '9A000000':
                    self.logger.info('successfully uploaded track')
                elif response == '91000000' or response == '90000000':
                    self.logger.debug("uploaded chunk %i of %i" % (i+1, len(trackpointChunks)))
                elif response == '92000000':
                    #this probably means segment was not as expected, resend previous segment?
                    self.logger.debug('wtf')
                else:
                    #print response
                    self.logger.info('error uploading track')
                    raise GB500Exception
        return len(tracks)
Ejemplo n.º 2
0
 def addTrackpointsFromHex(self, hex):        
     trackpoints = Utilities.chop(hex, 64)
     for trackpoint in trackpoints: 
         #print trackpoint
         parsedTrackpoint = Trackpoint().fromHex(trackpoint)
         
         if not self.trackpoints:
             parsedTrackpoint.calculateDate(self.date)
         else:
             parsedTrackpoint.calculateDate(self.trackpoints[-1].date)
         self.trackpoints.append(parsedTrackpoint)
Ejemplo n.º 3
0
 def getTracklist(self):
     tracklist = self._querySerial('getTracklist')
     if tracklist:
         trackHeaders = [] 
         if len(tracklist) > 8:
             j=1
             for hex in Utilities.chop(tracklist[6:-2],48):
                 header = TrackFileHeader().fromHex(j, hex, self.timezone, self.units)
                 j += 1
                 trackHeaders.append(header)
             self.logger.info('%i track(s) found' % len(trackHeaders))    
             return trackHeaders    
         else:
             self.logger.info('no tracks found') 
             pass
     else:
         print "Device is unresponsive.  Select 'CONNECT TO PC' from the device menu."
Ejemplo n.º 4
0
 def getWaypoints(self):
     response = self._querySerial('getWaypoints')            
     waypoints = Utilities.chop(response[46:-2], 40) #trim junk 
     return [Waypoint().fromHex(waypoint) for waypoint in waypoints] 
Ejemplo n.º 5
0
 def addLapsFromHex(self, hex):
     laps = Utilities.chop(hex,96)
     for lap in laps: 
         parsedLap = Lap().fromHex(lap)
         parsedLap.calculateDate(self.date)
         self.laps.append(parsedLap)