HumanActivityMonitorManager.prototype.start = function(type, changedCallback) {
var args = validator_.validateArgs(arguments, [
{name: 'type', type: types_.ENUM, values: Object.keys(HumanActivityType)},
- {name: 'changedCallback', type: types_.FUNCTION, optional: true, nullable: true}
+ {name: 'changedCallback', type: types_.FUNCTION, optional: true, nullable: true},
+ {name : 'option', type : types_.DICTIONARY, optional : true, nullable : true}
]);
var listenerId = 'HumanActivityMonitor_' + args.type;
+ var callbackInterval = null, sampleInterval = null;
+
+ switch (args.type) {
+ case HumanActivityType.GPS:
+ callbackInterval = !type_.isNullOrUndefined(args.option) ?
+ args.option.callbackInterval : 120000;
+ sampleInterval = !type_.isNullOrUndefined(args.option) ?
+ args.option.sampleInterval : 1000;
+ if (callbackInterval < 120000 || callbackInterval > 600000) {
+ throw new WebAPIException(WebAPIException.INVALID_VALUES_ERR,
+ 'callbackInterval is out of range');
+ }
+ if (sampleInterval < 1000 || sampleInterval > 120000) {
+ throw new WebAPIException(WebAPIException.INVALID_VALUES_ERR,
+ 'sampleInterval is out of range');
+ }
+ break
+ case HumanActivityType.HRM:
+ callbackInterval = !type_.isNullOrUndefined(args.option) ?
+ args.option.callbackInterval : 100;
+ if (callbackInterval < 10 || callbackInterval > 1000) {
+ throw new WebAPIException(WebAPIException.INVALID_VALUES_ERR,
+ 'callbackInterval is out of range');
+ }
+ break
+ }
+ console.log("callbackInterval = " + callbackInterval + ", sampleInterval = " + sampleInterval);
startListener(listenerId,
function(result) {
native_.callIfPossible(args.changedCallback, convertActivityData(args.type, result));
},
'HumanActivityMonitorManager_start',
- { type: args.type, listenerId: listenerId });
+ { type: args.type,
+ listenerId: listenerId,
+ callbackInterval: callbackInterval,
+ sampleInterval: sampleInterval
+ }
+ );
};
HumanActivityMonitorManager.prototype.stop = function(type) {
Instance::PostMessage(this, data->serialize().c_str());
};
- result = manager_->SetListener(type, cb);
+ result = manager_->SetListener(type, cb, args);
if (result) {
ReportSuccess(out);
} else {
}
PlatformResult HumanActivityMonitorManager::SetListener(
- const std::string& type, JsonCallback callback) {
+ const std::string& type , JsonCallback callback, const picojson::value& args) {
PlatformResult result = IsSupported(type);
if (!result) {
}
if (type == kActivityTypeHrm) {
- return SetHrmListener(callback);
+ return SetHrmListener(callback, args);
}
if (type == kActivityTypeGps) {
- return SetGpsListener(callback);
+ return SetGpsListener(callback, args);
}
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Undefined activity type");
// HRM
PlatformResult HumanActivityMonitorManager::SetHrmListener(
- JsonCallback callback) {
+ JsonCallback callback, const picojson::value& args) {
LoggerD("Enter");
sensor_h hrm_sensor;
int ret;
("Failed to create HRM sensor listener, error: %d",ret));
}
+ int callbackInterval = static_cast<int>(args.get("callbackInterval").get<double>());
+ LoggerD("callbackInterval: %d", callbackInterval);
+
ret = sensor_listener_set_event_cb(hrm_sensor_listener_,
- 0,
+ callbackInterval,
OnHrmSensorEvent,
this);
if (ret != SENSOR_ERROR_NONE) {
// GPS
PlatformResult HumanActivityMonitorManager::SetGpsListener(
- JsonCallback callback) {
+ JsonCallback callback, const picojson::value& args) {
LoggerD("Enter");
int ret;
("Failed to create location manager, error: %d",ret));
}
+ int callbackInterval = static_cast<int>(args.get("callbackInterval").get<double>()/1000);
+ int sampleInterval = static_cast<int>(args.get("sampleInterval").get<double>()/1000);
+ LoggerD("callbackInterval: %d, sampleInterval: %d", callbackInterval, sampleInterval);
+
ret = location_manager_set_location_batch_cb(location_handle_,
OnGpsEvent,
- 1, // batch_interval
- 120, // batch_period
+ sampleInterval, // batch_interval
+ callbackInterval, // batch_period
this);
if (ret != LOCATIONS_ERROR_NONE) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR,
common::PlatformResult Init();
common::PlatformResult SetListener(const std::string& type,
- JsonCallback callback);
+ JsonCallback callback, const picojson::value& args);
common::PlatformResult UnsetListener(const std::string& type);
common::PlatformResult GetHumanActivityData(const std::string& type,
gesture_error_e error,
void* user_data);
// HRM
- common::PlatformResult SetHrmListener(JsonCallback callback);
+ common::PlatformResult SetHrmListener(JsonCallback callback, const picojson::value& args);
common::PlatformResult UnsetHrmListener();
static void OnHrmSensorEvent(sensor_h sensor,
sensor_event_s *event,
void *user_data);
common::PlatformResult GetHrmData(picojson::value* data);
// GPS
- common::PlatformResult SetGpsListener(JsonCallback callback);
+ common::PlatformResult SetGpsListener(JsonCallback callback, const picojson::value& args);
common::PlatformResult UnsetGpsListener();
static void OnGpsEvent(int num_of_location, void *user_data);
common::PlatformResult GetGpsData(picojson::value* data);