Example #1
0
 def __init__(self, msgbinary):
     super().__init__(msgbinary)
     self.aidtype = self.navaidtypes[self.decode_sixbit_integer(
         msgbinary[38:43])]
     name = binary.decode_sixbit_ascii(msgbinary[43:163]).rstrip()
     self.posfixaccuracy = self.accuracy[self.decode_sixbit_integer(
         msgbinary[163:164])]
     self.longitude = binary.decode_twos_complement(
         msgbinary[164:192]) / 600000.0
     self.latitude = binary.decode_twos_complement(
         msgbinary[192:219]) / 600000.0
     tobow = self.decode_sixbit_integer(msgbinary[219:228])
     tostern = self.decode_sixbit_integer(msgbinary[228:237])
     toport = self.decode_sixbit_integer(msgbinary[237:243])
     tostarboard = self.decode_sixbit_integer(msgbinary[243:249])
     self.length = tobow + tostern
     self.width = toport + tostarboard
     self.epfdfixtype = self.epfdfixtypes[self.decode_sixbit_integer(
         msgbinary[249:253])]
     self.timestampsecond = self.decode_sixbit_integer(msgbinary[253:259])
     self.offposition = self.binaryflag[self.decode_sixbit_integer(
         msgbinary[259:260])]
     self.raim = self.binaryflag[self.decode_sixbit_integer(
         msgbinary[268:269])]
     self.virtualaid = self.binaryflag[self.decode_sixbit_integer(
         msgbinary[269:270])]
     self.assignedmode = self.binaryflag[self.decode_sixbit_integer(
         msgbinary[270:271])]
     nameextension = binary.decode_sixbit_ascii(msgbinary[272:361]).rstrip()
     self.name = name + nameextension
Example #2
0
 def __init__(self, msgbinary):
     super().__init__(msgbinary)
     self.aisversion = self.decode_sixbit_integer(msgbinary[38:40])
     self.imo = self.decode_sixbit_integer(msgbinary[40:70])
     self.callsign = binary.decode_sixbit_ascii(msgbinary[70:112]).rstrip()
     self.name = binary.decode_sixbit_ascii(msgbinary[112:232]).rstrip()
     try:
         self.shiptype = self.shiptypes[self.decode_sixbit_integer(
             msgbinary[232:240])]
     except KeyError:
         self.shiptype = 'Unknown'
     tobow = self.decode_sixbit_integer(msgbinary[240:249])
     tostern = self.decode_sixbit_integer(msgbinary[249:258])
     toport = self.decode_sixbit_integer(msgbinary[258:264])
     tostarboard = self.decode_sixbit_integer(msgbinary[264:270])
     self.length = tobow + tostern
     self.width = toport + tostarboard
     self.epfdfixtype = self.epfdfixtypes[self.decode_sixbit_integer(
         msgbinary[270:274])]
     etamonth = calendar.month_name[
         self.decode_sixbit_integer(msgbinary[274:278])]
     etaday = self.decode_sixbit_integer(msgbinary[278:283])
     etahour = self.decode_sixbit_integer(msgbinary[283:288])
     etamin = self.decode_sixbit_integer(msgbinary[288:294])
     self.eta = '{:02d}:{:02d} {} {}'.format(
         etahour, etamin, etaday, etamonth)
     self.draught = self.decode_sixbit_integer(msgbinary[294:302]) / 10
     self.destination = binary.decode_sixbit_ascii(
         msgbinary[302:422]).rstrip()
     self.dte = self.dtevalues[self.decode_sixbit_integer(
         msgbinary[422:423])]
Example #3
0
 def __init__(self, msgbinary):
     super().__init__(msgbinary)
     self.sequenceno = self.decode_sixbit_integer(msgbinary[38:40])
     self.destinationmmsi = self.decode_sixbit_integer(msgbinary[40:70])
     self.retransmitflag = self.binaryflag[self.decode_sixbit_integer(
         msgbinary[70:71])]
     self.msgtext = binary.decode_sixbit_ascii(msgbinary[72:936]).rstrip()
Example #4
0
 def inland_static_and_voyage_data(self):
     """
     sub message type that provides information on Inland Vessels
     """
     self.msgsubtype = 'Inland Static & Voyage Data'
     self.msgdetails['European Vessel ID'] = binary.decode_sixbit_ascii(
         self.msgbinary[56:104])
     self.msgdetails['Length'] = self.decode_sixbit_integer(
         self.msgbinary[104:117]) / 10
     self.msgdetails['Beam'] = self.decode_sixbit_integer(
         self.msgbinary[117:127]) / 10
     self.msgdetails['Ship Type'] = self.decode_sixbit_integer(
         self.msgbinary[127:141])
     self.msgdetails['Hazard'] = self.hazards[self.decode_sixbit_integer(
         self.msgbinary[141:144])]
     self.msgdetails['Draught'] = self.decode_sixbit_integer(
         self.msgbinary[144:155]) / 100
     self.msgdetails['Load Status'] = self.loadstatuses[
         self.decode_sixbit_integer(self.msgbinary[155:157])]
     self.msgdetails['Speed Measurement Quality'] = self.quality[
         self.decode_sixbit_integer(self.msgbinary[157:158])]
     self.msgdetails['Course Measurement Quality'] = self.quality[
         self.decode_sixbit_integer(self.msgbinary[158:159])]
     self.msgdetails['Heading Measurement Quality'] = self.quality[
         self.decode_sixbit_integer(self.msgbinary[159:160])]
Example #5
0
 def __init__(self, msgbinary):
     super().__init__(msgbinary)
     self.speed = self.decode_sixbit_integer(msgbinary[46:56]) / 10
     self.posfixaccuracy = self.accuracy[self.decode_sixbit_integer(
         msgbinary[46:47])]
     self.longitude = binary.decode_twos_complement(
         msgbinary[57:85]) / 600000.0
     self.latitude = binary.decode_twos_complement(
         msgbinary[85:112]) / 600000.0
     self.courseoverground = self.decode_sixbit_integer(
         msgbinary[112:124]) / 10
     self.trueheading = self.decode_sixbit_integer(msgbinary[124:133])
     self.timestampsecond = self.decode_sixbit_integer(msgbinary[133:139])
     self.name = binary.decode_sixbit_ascii(msgbinary[143:263]).rstrip()
     try:
         self.shiptype = self.shiptypes[self.decode_sixbit_integer(
             msgbinary[263:271])]
     except KeyError:
         self.shiptype = 'Unknown'
     tobow = self.decode_sixbit_integer(msgbinary[271:280])
     tostern = self.decode_sixbit_integer(msgbinary[280:289])
     toport = self.decode_sixbit_integer(msgbinary[289:295])
     tostarboard = self.decode_sixbit_integer(msgbinary[295:301])
     self.length = tobow + tostern
     self.width = toport + tostarboard
     self.epfdfixtype = self.epfdfixtypes[self.decode_sixbit_integer(
         msgbinary[301:305])]
     self.raim = self.binaryflag[self.decode_sixbit_integer(
         msgbinary[305:306])]
     self.dte = self.dtevalues[self.decode_sixbit_integer(
         msgbinary[306:307])]
Example #6
0
 def __init__(self, msgbinary):
     super().__init__(msgbinary)
     self.partno = self.decode_sixbit_integer(msgbinary[38:40])
     if self.partno == 0:
         self.name = binary.decode_sixbit_ascii(msgbinary[40:160]).rstrip()
     elif self.partno == 1:
         self.shiptype = self.shiptypes[self.decode_sixbit_integer(
             msgbinary[40:48])]
         self.vendorid = binary.decode_sixbit_ascii(msgbinary[48:66])
         self.unitmodelcode = self.decode_sixbit_integer(msgbinary[66:70])
         self.serialno = self.decode_sixbit_integer(msgbinary[70:90])
         self.callsign = binary.decode_sixbit_ascii(
             msgbinary[90:132]).rstrip()
         tobow = self.decode_sixbit_integer(msgbinary[240:249])
         tostern = self.decode_sixbit_integer(msgbinary[249:258])
         toport = self.decode_sixbit_integer(msgbinary[258:264])
         tostarboard = self.decode_sixbit_integer(msgbinary[264:270])
         self.length = tobow + tostern
         self.width = toport + tostarboard
Example #7
0
 def test_ASCII_decode(self):
     """
     Tests converting a binary string into readable text.
     """
     testbinarystr = ('010100001000000101100000010001010101001001000011'
                      '001011100000000010010010001111010111001110'
                      '100000000110001111011000100000001010010101'
                      '001101010000010011100000001111010110000101'
                      '010010100000010100001000000101100000001100'
                      '000001011010011001100000000100001111000111'
                      '100000110000110001110010110011110100110101'
                      '110110110111111000111001')
     expectedstr = 'THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 0123456789'
     resultstr = binary.decode_sixbit_ascii(testbinarystr[0:324])
     self.assertEqual(expectedstr, resultstr)
Example #8
0
 def marine_traffic_signals(self):
     """
     traffic information for entrance to a harbour which
     traffic flow is controlled
     """
     self.msgsubtype = "Marine Traffic Signals"
     self.msgdetails['Message Linkage ID'] = self.decode_sixbit_integer(
         self.msgbinary[56:66])
     self.msgdetails['Signal Station Name'] = binary.decode_sixbit_ascii(
         self.msgbinary[66:186]).rstrip()
     self.msgdetails['Signal Status'] = \
         self.signalstatus[self.decode_sixbit_integer(
             self.msgbinary[235:237])]
     self.msgdetails['Signal In Service'] = \
         self.marinetrafficsignals[self.decode_sixbit_integer(
             self.msgbinary[237:242])]
     hour = self.decode_sixbit_integer(self.msgbinary[242:247])
     minute = self.decode_sixbit_integer(self.msgbinary[247:253])
     self.msgdetails['Time UTC'] = '{:02d}:{:02d}'.format(hour, minute)
     self.msgdetails['Expected Next Signal'] = \
         self.marinetrafficsignals[self.decode_sixbit_integer(
             self.msgbinary[253:258])]
Example #9
0
 def test_empty_string_decode_sixbit_ascii(self):
     """
     an empty string should raise a NoBinaryData exception
     """
     with self.assertRaises(binary.NoBinaryData):
         binary.decode_sixbit_ascii('')