@@ -216,7 +216,12 @@ depacketizerModel toMetaOut ps = L.concat dataWidthPackets
216
216
_ -> fwdF
217
217
218
218
hdr = bitCoerce $ Vec. unsafeFromList @ headerBytes $ _data <$> hdrF
219
- metaOut = toMetaOut hdr (_meta $ L. head hdrF)
219
+ metaIn = case hdrF of
220
+ [] ->
221
+ -- There are @headerBytes@ packets in this list, and (1 <= headerBytes)
222
+ error " depacketizerModel: absurd"
223
+ (hdrF0 : _) -> _meta hdrF0
224
+ metaOut = toMetaOut hdr metaIn
220
225
221
226
bytePackets :: [[PacketStreamM2S 1 metaIn ]]
222
227
bytePackets =
@@ -257,10 +262,14 @@ depacketizeToDfModel ::
257
262
depacketizeToDfModel toOut ps = L. map parseHdr bytePackets
258
263
where
259
264
parseHdr :: [PacketStreamM2S 1 metaIn ] -> a
260
- parseHdr hdrF =
265
+ parseHdr [] =
266
+ -- There are at least @headerBytes@ packets in this list, and
267
+ -- (1 <= headerBytes)
268
+ error " depacketizeToDfModel: absurd"
269
+ parseHdr hdrF@ (hdrF0 : _) =
261
270
toOut
262
271
(bitCoerce $ Vec. unsafeFromList $ L. map _data hdrF)
263
- (_meta $ L. head hdrF )
272
+ (_meta hdrF0 )
264
273
265
274
bytePackets :: [[PacketStreamM2S 1 metaIn ]]
266
275
bytePackets =
@@ -313,9 +322,13 @@ packetizerModel ::
313
322
packetizerModel toMetaOut toHeader ps = L. concatMap (upConvert . prependHdr) bytePackets
314
323
where
315
324
prependHdr :: [PacketStreamM2S 1 metaIn ] -> [PacketStreamM2S 1 metaOut ]
316
- prependHdr fragments = hdr L. ++ L. map (\ f -> f{_meta = metaOut}) fragments
325
+ prependHdr [] =
326
+ -- 'chunkBy' filters empty lists, so all elements of bytePackets are
327
+ -- guaranteed to be non-null
328
+ error " packetizerModel: Unreachable code"
329
+ prependHdr fragments@ (h : _) =
330
+ hdr L. ++ L. map (\ f -> f{_meta = metaOut}) fragments
317
331
where
318
- h = L. head fragments
319
332
metaOut = toMetaOut (_meta h)
320
333
hdr = L. map go (toList $ bitCoerce (toHeader (_meta h)))
321
334
go byte = PacketStreamM2S (singleton byte) Nothing metaOut (_abort h)
0 commit comments