@@ -53,69 +53,69 @@ export class Brickd extends events.EventEmitter {
5353
5454 // everything else is handled from state machine
5555 switch ( state ) {
56- case BrickdConnectionState . start :
57- if ( m1 === "BRICKD" ) {
58- const version = m2 [ 1 ] ;
59- if ( compareVersions ( version , minBrickdVersion ) < 0 ) {
56+ case BrickdConnectionState . start :
57+ if ( m1 === "BRICKD" ) {
58+ const version = m2 [ 1 ] ;
59+ if ( compareVersions ( version , minBrickdVersion ) < 0 ) {
60+ state = BrickdConnectionState . bad ;
61+ this . emit ( 'error' , new Error ( `Brickd is too old. Please upgrade to version >= ${ minBrickdVersion } ` ) ) ;
62+ break ;
63+ }
64+ if ( compareVersions ( version , maxBrickdVersion ) >= 0 ) {
65+ state = BrickdConnectionState . bad ;
66+ this . emit ( 'error' , new Error ( 'Brickd version is too new.' ) ) ;
67+ break ;
68+ }
69+ state = BrickdConnectionState . handshake ;
70+ channel . write ( 'YOU ARE A ROBOT\n' ) ;
71+ }
72+ else {
73+ state = BrickdConnectionState . bad ;
74+ this . emit ( 'error' , new Error ( 'Brickd server did not send expected welcome message.' ) ) ;
75+ }
76+ break ;
77+ case BrickdConnectionState . handshake :
78+ if ( m1 === "OK" ) {
79+ state = BrickdConnectionState . watchPower ;
80+ channel . write ( "WATCH POWER\n" ) ;
81+ }
82+ else if ( m1 === "BAD" ) {
6083 state = BrickdConnectionState . bad ;
61- this . emit ( 'error' , new Error ( `Brickd is too old. Please upgrade to version >= ${ minBrickdVersion } ` ) ) ;
62- break ;
84+ this . emit ( 'error' , new Error ( "Brickd handshake failed." ) ) ;
85+ }
86+ break ;
87+ case BrickdConnectionState . watchPower :
88+ if ( m1 === "OK" ) {
89+ state = BrickdConnectionState . getBatteryVoltage ;
90+ channel . write ( "GET system.battery.voltage\n" ) ;
91+ }
92+ else {
93+ state = BrickdConnectionState . bad ;
94+ this . emit ( 'error' , new Error ( "Brickd failed to register for power events." ) ) ;
95+ }
96+ break ;
97+ case BrickdConnectionState . getBatteryVoltage :
98+ if ( m1 === "OK" ) {
99+ this . emit ( 'message' , `PROPERTY system.battery.voltage ${ m2 . join ( ' ' ) } ` ) ;
100+ state = BrickdConnectionState . getSerialNum ;
101+ channel . write ( "GET system.info.serial\n" ) ;
102+ }
103+ else {
104+ state = BrickdConnectionState . bad ;
105+ this . emit ( 'error' , new Error ( "Brickd failed to get battery voltage" ) ) ;
106+ }
107+ break ;
108+ case BrickdConnectionState . getSerialNum :
109+ if ( m1 === "OK" ) {
110+ this . _serialNumber = m2 . join ( ' ' ) ;
111+ state = BrickdConnectionState . ok ;
112+ this . emit ( 'ready' ) ;
63113 }
64- if ( compareVersions ( version , maxBrickdVersion ) >= 0 ) {
114+ else {
65115 state = BrickdConnectionState . bad ;
66- this . emit ( 'error' , new Error ( 'Brickd version is too new.' ) ) ;
67- break ;
116+ this . emit ( 'error' , new Error ( "Brickd failed to get serial number" ) ) ;
68117 }
69- state = BrickdConnectionState . handshake ;
70- channel . write ( 'YOU ARE A ROBOT\n' ) ;
71- }
72- else {
73- state = BrickdConnectionState . bad ;
74- this . emit ( 'error' , new Error ( 'Brickd server did not send expected welcome message.' ) ) ;
75- }
76- break ;
77- case BrickdConnectionState . handshake :
78- if ( m1 === "OK" ) {
79- state = BrickdConnectionState . watchPower ;
80- channel . write ( "WATCH POWER\n" ) ;
81- }
82- else if ( m1 === "BAD" ) {
83- state = BrickdConnectionState . bad ;
84- this . emit ( 'error' , new Error ( "Brickd handshake failed." ) ) ;
85- }
86- break ;
87- case BrickdConnectionState . watchPower :
88- if ( m1 === "OK" ) {
89- state = BrickdConnectionState . getBatteryVoltage ;
90- channel . write ( "GET system.battery.voltage\n" ) ;
91- }
92- else {
93- state = BrickdConnectionState . bad ;
94- this . emit ( 'error' , new Error ( "Brickd failed to register for power events." ) ) ;
95- }
96- break ;
97- case BrickdConnectionState . getBatteryVoltage :
98- if ( m1 === "OK" ) {
99- this . emit ( 'message' , `PROPERTY system.battery.voltage ${ m2 . join ( ' ' ) } ` ) ;
100- state = BrickdConnectionState . getSerialNum ;
101- channel . write ( "GET system.info.serial\n" ) ;
102- }
103- else {
104- state = BrickdConnectionState . bad ;
105- this . emit ( 'error' , new Error ( "Brickd failed to get battery voltage" ) ) ;
106- }
107- break ;
108- case BrickdConnectionState . getSerialNum :
109- if ( m1 === "OK" ) {
110- this . _serialNumber = m2 . join ( ' ' ) ;
111- state = BrickdConnectionState . ok ;
112- this . emit ( 'ready' ) ;
113- }
114- else {
115- state = BrickdConnectionState . bad ;
116- this . emit ( 'error' , new Error ( "Brickd failed to get serial number" ) ) ;
117- }
118- break ;
118+ break ;
119119 }
120120 } ) ;
121121 }
0 commit comments