[ML][Single] Added InvokeAsync() implementation 20/260420/6
authorPiotr Kosko/Tizen API (PLT) /SRPOL/Engineer/Samsung Electronics <p.kosko@samsung.com>
Wed, 23 Jun 2021 11:32:22 +0000 (13:32 +0200)
committerPiotr Kosko/Tizen API (PLT) /SRPOL/Engineer/Samsung Electronics <p.kosko@samsung.com>
Fri, 25 Jun 2021 06:42:43 +0000 (08:42 +0200)
commit3e12d4f1adea2c66e27494061757da3ddc33e7cb
tree7bfa5e1289f792274b785fa5fb82ff4bea7cad7e
parentb3723f9937460808c4eface171c3bde994b642c8
[ML][Single] Added InvokeAsync() implementation

[ACR] https://code.sec.samsung.net/jira/browse/TWDAPI-278

[Verification] Code compiles without errors.
TCT passrate of existing APIs didn't change.

Checked in chrome console with below snippets:
// initialize test data
model = tizen.ml.single.openModel("documents/model.tflite");

var tensorsInfo = new tizen.ml.TensorsInfo();
tensorsInfo.addTensorInfo("tensor", "UINT8", [3, 224, 224]);
var tensorsData = tensorsInfo.getTensorsData();

var tensorsInfoInvalid = new tizen.ml.TensorsInfo();
tensorsInfoInvalid.addTensorInfo("tensor", "UINT8", [3, 125, 125]);
var tensorsDataInvalid = tensorsInfoInvalid.getTensorsData();

function errorCallback(error) {
  console.log(error);
}

function successCallback(tensorsDataOut) {
  console.log("Inference finished successfully");
  console.log(tensorsDataOut.getTensorRawData(0));
  tensorsDataOut.dispose();
}

// success
// test1
model.invokeAsync(tensorsData, successCallback, errorCallback);
// test2
model.invokeAsync(tensorsData, successCallback);

// errors
// test3
model.invokeAsync(tensorsData);  // TypeMismatchError - sync
// test4
model.invokeAsync(null, successCallback);  // TypeMismatchError - sync
//  test5
model.invokeAsync(tensorsDataInvalid, successCallback, errorCallback);  // AbortError - async
// test6
model.setTimeout(1)
model.invokeAsync(tensorsData, successCallback, errorCallback);  // TimeoutError - async

// clear tensorsData
tensorsData.dispose();
tensorsInfo.dispose();

// test7 - use of disposed tesnsorsData
model.invokeAsync(tensorsData, successCallback, errorCallback);  // AbortError - sync

// clear other data
tensorsDataInvalid.dispose();
tensorsInfoInvalid.dispose();
model.close();

Change-Id: I59900d7bab9a76939e27d68cb2bcd5434f446b3d
src/ml/js/ml_single.js
src/ml/ml_instance.cc