@@ -42,7 +42,7 @@ export function getLinkInfo(subject_id, node_id, yukon_state) {
4242 }
4343 return Array . from ( new Set ( infos ) ) ;
4444}
45- export function getRelatedLinks ( port , yukon_state ) {
45+ export function getRelatedLinks ( port , port_type , yukon_state ) {
4646 let links = [ ] ;
4747 for ( const avatar of yukon_state . current_avatars ) {
4848 const registersKeys = Object . keys ( avatar . registers_values ) ;
@@ -56,11 +56,62 @@ export function getRelatedLinks(port, yukon_state) {
5656 const link_name = results [ 2 ] ;
5757 const value = avatar . registers_values [ register_name ] ;
5858 if ( parseInt ( value ) === parseInt ( port ) && register_name . endsWith ( ".id" ) ) {
59+ if ( ( port_type === "pub" || port_type === "sub" ) && ( link_type === "cln" || link_type === "srv" ) ) continue ;
5960 const datatype_key = registersKeys . find ( ( a ) => a . endsWith ( link_name + ".type" ) ) ;
6061 const datatype = avatar . registers_values [ datatype_key ] ;
6162 links . push ( { name : link_name , node_id : avatar . node_id , "port" : port , type : link_type , "register_name" : register_name , "datatype" : datatype } ) ;
6263 }
6364 }
6465 }
6566 return Array . from ( new Set ( links ) ) ;
67+ }
68+ export function decodeTelegaVSSC ( vssc ) {
69+ const high_number = vssc / 16 ;
70+ const low_number = vssc % 16 ;
71+ if ( low_number !== 0 ) {
72+ if ( high_number === 0 ) {
73+ return "Fault in Standby, fault code: " + low_number ;
74+ } else if ( high_number == 1 ) {
75+ // self test
76+ return "Fault in Self test, fault code: " + low_number ;
77+ } else if ( high_number == 2 ) {
78+ return "Fault in Motor ID, fault code: " + low_number ;
79+ } else if ( high_number == 5 ) {
80+ // drive
81+ if ( low_number === 1 ) {
82+ return "Torque control mode" ;
83+ } else if ( low_number === 2 ) {
84+ return "Voltage control mode" ;
85+ } else if ( low_number === 3 ) {
86+ return "Velocity control mode" ;
87+ } else if ( low_number === 9 ) {
88+ // Ratiometric torque control mode
89+ return "Ratiometric torque control mode" ;
90+ } else if ( low_number === 10 ) {
91+ // Ratiometric voltage control mode
92+ return "Ratiometric voltage control mode" ;
93+ } else {
94+ return "Fault in Drive, fault code: " + low_number ;
95+ }
96+ } else if ( high_number == 7 ) {
97+ // servo
98+ return "Fault in Servo, fault code: " + low_number ;
99+ }
100+ } else {
101+ if ( high_number === 0 ) {
102+ return "Standby" ;
103+ } else if ( high_number == 1 ) {
104+ // self test
105+ return "Self test" ;
106+ } else if ( high_number == 2 ) {
107+ return "Motor ID" ;
108+ } else if ( high_number == 5 ) {
109+ // drive
110+ return "Drive" ;
111+ } else if ( high_number == 7 ) {
112+ // servo
113+ return "Servo" ;
114+ }
115+ }
116+ return "Unknown code" ;
66117}
0 commit comments