@@ -2955,35 +2955,38 @@ let OctaviaDevice = class OctaviaDevice extends CustomEventSource {
29552955 return ;
29562956 } ;
29572957 const upThis = this ;
2958- if ( ingressEvent . type > 14 ) {
2958+ let warningMessage ;
2959+ let mappedType = ingressEvent . type ;
2960+ if ( mappedType === 15 ) {
2961+ mappedType = 240 ;
2962+ } ;
2963+ if ( mappedType >= 240 ) {
29592964 // System messages
2960- let mappedType = ingressEvent . type ;
2961- if ( mappedType === 240 ) {
2962- mappedType = 15 ;
2963- } ;
2964- if ( mappedType === 15 ) {
2965- switch ( ingressEvent . data . constructor ) {
2966- case Uint8Array :
2967- case Uint8ClampedArray : {
2968- break ;
2969- } ;
2970- default : {
2965+ switch ( ingressEvent . data . constructor ) {
2966+ case Uint8Array :
2967+ case Uint8ClampedArray : {
2968+ break ;
2969+ } ;
2970+ default : {
2971+ if ( ingressEvent ?. length > 0 ) {
29712972 ingressEvent . data = Uint8Array . from ( ingressEvent . data ) ;
29722973 } ;
29732974 } ;
29742975 } ;
2975- const eventRunner = upThis . #chEventRun. get ( ingressEvent . type ) ;
2976+ const eventRunner = upThis . #chEventRun. get ( mappedType ) ;
29762977 if ( typeof eventRunner === "function" ) {
29772978 eventRunner . call ( upThis , ingressEvent ) ;
29782979 } else {
2979- console . warn ( `Received an unknown type ${ ingressEvent . type } message.` ) ;
2980+ warningMessage = `Received an unknown type ${ ingressEvent . type } message.` ;
29802981 } ;
2981- } else if ( ingressEvent . type >= 8 ) {
2982- const msgTypeSpec = eventTypes [ ingressEvent . type ] ?. length > 0 ? `${ eventTypes [ ingressEvent . type ] } ${ ( 0b11000 >> ( ingressEvent . type - 8 ) ) ? ingressEvent . data [ 0 ] : "" } ` : `unknown type ${ ingressEvent . type } ` ;
2982+ } else if ( mappedType >= 15 ) {
2983+ warningMessage = `Received an unknown type ${ ingressEvent . type } message.` ;
2984+ } else if ( mappedType >= 8 ) {
2985+ const msgTypeSpec = eventTypes [ mappedType ] ?. length > 0 ? `${ eventTypes [ mappedType ] } ${ ( 0b11000 >> ( mappedType - 8 ) ) ? ingressEvent . data [ 0 ] : "" } ` : `unknown type ${ mappedType } ` ;
29832986 if ( typeof ingressEvent . ch === "number" ) {
29842987 // Channel messages
29852988 const mappedCh = ( ingressEvent ?. port < 16 ) ? ( ingressEvent . port << 4 ) | ingressEvent . ch : upThis . chRedir ( ingressEvent . ch , ( ingressEvent . track < 16384 ) ? ingressEvent . track : 0 , false ) ;
2986- const eventRunner = upThis . #chEventRun. get ( ingressEvent . type ) ;
2989+ const eventRunner = upThis . #chEventRun. get ( mappedType ) ;
29872990 if ( typeof eventRunner === "function" ) {
29882991 let noReceipient = true ;
29892992 for ( const mappedPart of upThis . #receiveTree[ mappedCh ] ?? [ ] ) {
@@ -2993,19 +2996,25 @@ let OctaviaDevice = class OctaviaDevice extends CustomEventSource {
29932996 if ( noReceipient ) {
29942997 let msgPortCh = `CH${ ingressEvent . ch + 1 } ` ;
29952998 if ( ingressEvent . port < 255 ) {
2996- msgPortCh += ` on port ${ ingressEvent . port } ` ;
2999+ msgPortCh += ` on port ${ ingressEvent . port + 1 } ` ;
29973000 } ;
29983001 msgPortCh += ` (CH${ mappedCh } )` ;
29993002 console . warn ( `A ${ msgTypeSpec } message sent to ${ msgPortCh } had no receipient.` ) ;
30003003 } ;
30013004 } else {
3002- console . warn ( `Event type ${ ingressEvent . type } does not have a valid runner.` ) ;
3005+ warningMessage = `Event type ${ ingressEvent . type } does not have a valid runner.` ;
30033006 } ;
30043007 } else {
3005- console . warn ( `Received a ${ msgTypeSpec } message without a specified channel.` ) ;
3008+ warningMessage = `Received a ${ msgTypeSpec } message without a specified channel.` ;
30063009 } ;
30073010 } else {
3008- console . warn ( `Received an unknown type ${ ingressEvent . type } message.` ) ;
3011+ warningMessage = `Received an unknown type ${ ingressEvent . type } message.` ;
3012+ } ;
3013+ if ( warningMessage ?. length > 0 ) {
3014+ console . warning ( `${ warningMessage } ` ) ;
3015+ if ( typeof ingressEvent . offset === "number" ) {
3016+ console . debug ( `Binary stream offset at 0x${ ingressEvent . offset . toString ( 16 ) . padStart ( 6 , "0" ) } .` ) ;
3017+ } ;
30093018 } ;
30103019 if ( upThis . #metaTexts. length > upThis . maxKeepMetaCount ) {
30113020 upThis . #metaTexts. splice ( upThis . maxKeepMetaCount >> 1 , upThis . #metaTexts. length + 1 - ( upThis . maxKeepMetaCount >> 1 ) ) ;
0 commit comments