@@ -79,7 +79,6 @@ export class NaoRobotModel extends DOMWidgetModel {
79
79
80
80
// Timeout after ~10 seconds
81
81
for ( let i = 0 ; i < 100 ; i ++ ) {
82
- await sleep ( 100 ) ;
83
82
if ( this . qiSession . isConnected ( ) ) {
84
83
this . connected = 'Connected' ;
85
84
this . set ( 'connected' , 'Connected' ) ;
@@ -88,6 +87,7 @@ export class NaoRobotModel extends DOMWidgetModel {
88
87
console . log ( 'Connection successful after ' , i / 10.0 , ' seconds.' ) ;
89
88
break ;
90
89
}
90
+ await sleep ( 100 ) ;
91
91
}
92
92
93
93
// Handle connection failure
@@ -106,6 +106,12 @@ export class NaoRobotModel extends DOMWidgetModel {
106
106
}
107
107
108
108
private async createService ( serviceName : string ) {
109
+ // Skip if service exists already
110
+ if ( this . _services [ serviceName ] !== undefined ) {
111
+ console . log ( "Service " + serviceName + " exists." ) ;
112
+ return ;
113
+ }
114
+
109
115
this . changeStatus ( 'Creating service ' + serviceName ) ;
110
116
const servicePromise = this . qiSession . service ( serviceName ) ;
111
117
@@ -131,12 +137,23 @@ export class NaoRobotModel extends DOMWidgetModel {
131
137
args : any ,
132
138
_kwargs : any
133
139
) {
140
+ // Wait for service to become available
141
+ const sleep = ( ms : number ) => new Promise ( ( r ) => setTimeout ( r , ms ) ) ;
142
+
143
+ // Timeout after ~5 seconds
144
+ for ( let i = 0 ; i < 50 ; i ++ ) {
145
+ if ( this . _services [ serviceName ] !== undefined ) {
146
+ console . log ( 'Service available after ' , i / 10.0 , ' seconds.' ) ;
147
+ break ;
148
+ }
149
+ await sleep ( 100 ) ;
150
+ }
151
+
134
152
if ( this . _services [ serviceName ] [ methodName ] === undefined ) {
135
153
this . changeStatus ( methodName + ' does not exist for ' + serviceName ) ;
136
154
return ;
137
155
}
138
156
139
- // let serviceResponse;
140
157
this . changeStatus ( 'Running method ' + methodName ) ;
141
158
142
159
const servicePromise = this . _services [ serviceName ] [ methodName ] ( ...args ) ;
0 commit comments