@@ -76,28 +76,36 @@ def parse_radio_block(pkt_version: int, block_header: BlockHeader, hex_block_con
76
76
block_bytes : bytes = bytes .fromhex (hex_block_contents )
77
77
78
78
try :
79
- # TODO Make an interface to support multiple v1/v2/v3 objects
80
79
block_subtype = v1db .DataBlockSubtype (block_header .message_subtype )
81
- block_contents = v1db .DataBlock .parse (block_subtype , block_bytes )
82
- block_name = block_subtype .name .lower ()
83
-
84
- logger .info (str (block_contents ))
85
-
86
- # TODO fix at some point
87
- # if block == DataBlockSubtype.STATUS:
88
- # self.status.rocket = jsp.RocketData.from_data_block(block)
89
- # return
90
-
91
- return ParsedBlock (block_name , block_header , dict (block_contents )) # type: ignore
92
-
93
80
except ValueError :
94
- logger .error ("Invalid data block subtype" )
81
+ logger .error (f"Invalid data block subtype { block_header .message_subtype } !" )
82
+ return
95
83
84
+ try :
85
+ # TODO Make an interface to support multiple v1/v2/v3 objects
86
+ block_contents = v1db .DataBlock .parse (block_subtype , block_bytes )
96
87
except NotImplementedError :
97
88
logger .warning (
98
89
f"Block parsing for type { block_header .message_type } , with subtype { block_header .message_subtype } not \
99
90
implemented!"
100
91
)
92
+ return
93
+ except v1db .DataBlockException as e :
94
+ logger .error (e )
95
+ logger .error (f"Block header: { block_header } " )
96
+ logger .error (f"Block contents: { hex_block_contents } " )
97
+ return
98
+
99
+ block_name = block_subtype .name .lower ()
100
+
101
+ logger .debug (str (block_contents ))
102
+
103
+ # TODO fix at some point
104
+ # if block == DataBlockSubtype.STATUS:
105
+ # self.status.rocket = jsp.RocketData.from_data_block(block)
106
+ # return
107
+
108
+ return ParsedBlock (block_name , block_header , dict (block_contents )) # type: ignore
101
109
102
110
103
111
def parse_rn2483_transmission (data : str , config : Config ) -> Optional [ParsedTransmission ]:
@@ -124,7 +132,7 @@ def parse_rn2483_transmission(data: str, config: Config) -> Optional[ParsedTrans
124
132
from_approved_callsign (pkt_hdr , config .approved_callsigns )
125
133
126
134
if len (pkt_hdr ) <= 32 : # If this packet nothing more than just the header
127
- logger .info (f"{ pkt_hdr } " )
135
+ logger .debug (f"{ pkt_hdr } " )
128
136
129
137
blocks = data [32 :] # Remove the packet header
130
138
@@ -164,7 +172,7 @@ def from_approved_callsign(pkt_hdr: PacketHeader, approved_callsigns: dict[str,
164
172
165
173
# Ensure packet is from an approved call sign
166
174
if pkt_hdr .callsign in approved_callsigns :
167
- logger .info (f"Incoming packet from { pkt_hdr .callsign } ({ approved_callsigns .get (pkt_hdr .callsign )} )" )
175
+ logger .debug (f"Incoming packet from { pkt_hdr .callsign } ({ approved_callsigns .get (pkt_hdr .callsign )} )" )
168
176
else :
169
177
logger .warning (f"Incoming packet from unauthorized call sign { pkt_hdr .callsign } " )
170
178
return False
0 commit comments