spot-sdk-js
Version:
Develop applications and payloads for Spot using the unofficial Boston Dynamics Spot Node.js SDK.
228 lines (203 loc) • 7.99 kB
JavaScript
const {BaseClient, common_header_errors} = require('./common');
const data_index_protos = require('../bosdyn/api/data_index_pb');
const data_service = require('../bosdyn/api/data_service_grpc_pb');
class InvalidArgument extends Error {
constructor(msg){
super(msg);
this.name = 'InvalidArgument';
}
};
/**
* Client for adding to robot data buffer.
* @class DataServiceClient
* @extends BaseClient
*/
class DataServiceClient extends BaseClient {
static default_service_name = 'data-service';
static service_type = 'bosdyn.api.DataService';
/**
* Create an instance of DataServiceClient's class.
* @param {?string} name
*/
constructor(name=null){
super(data_service.DataServiceClient, name);
this.log_tick_schemas = {};
this._timesync_endpoint = null;
}
/**
* Update instance from another object.
* @param {object} other The object where to copy from.
* @return {void}
*/
update_from(other){
super.update_from(other);
try{
this._timesync_endpoint = other.time_sync.endpoint;
}catch(e){
}
}
/**
* Query for data index
* @param {data_index_protos.DataQuery} query
* @param {object} [args] Extra arguments for controlling RPC details.
* @return {*}
* @throws {RpcError} Problem communicating with the robot.
*/
async get_data_index(query, args){
return await this._do_get_data_index(this.call, query, args);
}
/**
* Async version of get_data_index().
* @param {data_index_protos.DataQuery} query
* @param {object} [args] Extra arguments for controlling RPC details.
* @return {*}
* @throws {RpcError} Problem communicating with the robot.
*/
get_data_index_async(query, args){
return this._do_get_data_index(this.call_async, query, args);
}
/**
* Internal get_data_index RPC stub call.
* @param {function} func
* @param {data_index_protos.DataQuery} query
* @param {object} [args] Extra arguments for controlling RPC details.
* @return {*}
* @private
*/
async _do_get_data_index(func, query, args){
const request = new data_index_protos.GetDataIndexRequest().setDataQuery(query);
return await func(this._stub.getDataIndex, request, null, common_header_errors, args);
}
/**
* Internal get_data_index RPC stub call.
* @param {function} func
* @param {data_index_protos.DataQuery} query
* @param {object} [args] Extra arguments for controlling RPC details.
* @return {*}
* @throws {RpcError} Problem communicating with the robot.
*/
async get_data_pages(time_range, args){
return await this._do_get_data_pages(this.call, time_range, args);
}
/**
* Async version of get_data_pages().
* @param {function} func
* @param {data_index_protos.DataQuery} query
* @param {object} [args] Extra arguments for controlling RPC details.
* @return {*}
* @throws {RpcError} Problem communicating with the robot.
*/
get_data_pages_async(time_range, args){
return this._do_get_data_pages(this.call_async, time_range, args);
}
/**
* @param {function} func
* @param {!data_index_protos.TimeRange} time_range
* @param {object} [args] Extra arguments for controlling RPC details.
* @return {*}
* @private
*/
async _do_get_data_pages(func, time_range, args){
const request = new data_index_protos.GetDataPagesRequest().setTimeRange(time_range);
return await func(this._stub.getDataPages, request, null, common_header_errors, args);
}
/**
* @param {?data_index_protos.TimeRange} time_range
* @param {!Array<string>} page_ids
* @param {object} [args] Extra arguments for controlling RPC details.
* @return {*}
*/
async delete_data_pages(time_range, page_ids, args){
return await this._do_delete_data_pages(this.call, time_range, page_ids, args);
}
/**
* @param {?data_index_protos.TimeRange} time_range
* @param {!Array<string>} page_ids
* @param {object} [args] Extra arguments for controlling RPC details.
* @return {*}
*/
delete_data_pages_async(time_range, page_ids, args){
return this._do_delete_data_pages(this.call_async, time_range, page_ids, args);
}
/**
* @param {function} func
* @param {?data_index_protos.TimeRange} time_range
* @param {!Array<string>} page_ids
* @param {object} [args] Extra arguments for controlling RPC details.
* @return {*}
* @private
*/
async _do_delete_data_pages(func, time_range, page_ids, args){
const request = new data_index_protos.DeleteDataPagesRequest()
.setTimeRange(time_range)
.setPageIdsList(page_ids);
return await func(this._stub.deleteDataPages, request, null, common_header_errors, args);
}
/**
* Query for operator comments and events
* @param {?data_index_protos.EventsCommentsSpec} query
* @param {object} [args] Extra arguments for controlling RPC details.
* @return {*}
* @throws {RpcError} Problem communicating with the robot.
*/
async get_events_comments(query, args){
return await this._do_get_events_comments(this.call, query, args);
}
/**
* Async version of get_events_comments().
* @param {?data_index_protos.EventsCommentsSpec} query
* @param {object} [args] Extra arguments for controlling RPC details.
* @return {*}
* @throws {RpcError} Problem communicating with the robot.
*/
get_events_comments_async(query, args){
return this._do_get_events_comments(this.call_async, query, args);
}
/**
* @param {function} func
* @param {?data_index_protos.EventsCommentsSpec} query
* @param {object} [args] Extra arguments for controlling RPC details.
* @return {*}
* @throws {RpcError} Problem communicating with the robot.
* @private
*/
async _do_get_events_comments(func, query, args){
const request = new data_index_protos.GetEventsCommentsRequest().setEventCommentRequest(query);
return await func(this._stub.getEventsComments, request, null, common_header_errors, args);
}
/**
* Query for operator comments and events.
* @param {boolean} [get_blob_specs=false] whether to list message series.
* @param {object} [args] Extra arguments for controlling RPC details.
* @return {*}
* @throws {RpcError} Problem communicating with the robot.
*/
async get_data_buffer_status(get_blob_specs = false, args){
return await this._do_get_data_buffer_status(this.call, get_blob_specs, args);
}
/**
* Async version of get_data_buffer_status();
* @param {boolean} [get_blob_specs=false] whether to list message series.
* @param {object} [args] Extra arguments for controlling RPC details.
* @return {*}
* @throws {RpcError} Problem communicating with the robot.
*/
get_data_buffer_status_async(get_blob_specs = false, args){
return this._do_get_data_buffer_status(this.call_async, get_blob_specs, args);
}
/**
* @param {function} func
* @param {boolean} [get_blob_specs=false] whether to list message series.
* @param {object} [args] Extra arguments for controlling RPC details.
* @return {*}
* @throws {RpcError} Problem communicating with the robot.
* @private
*/
async _do_get_data_buffer_status(func, get_blob_specs, args){
const request = new data_index_protos.GetDataBufferStatusRequest().setGetBlobSpecs(get_blob_specs);
return await func(this._stub.getDataBufferStatus, request, null, common_header_errors, args);
}
};
module.exports = {
DataServiceClient
};