diff --git a/src/io/cloud.js b/src/io/cloud.js index e66faf417..e8c95a15c 100644 --- a/src/io/cloud.js +++ b/src/io/cloud.js @@ -1,32 +1,63 @@ -/** - * Cloud IO Device responsible for sending and receiving messages from - * cloud provider (mananging the cloud server connection) and interacting - * with cloud variables in the current project. - */ - const Variable = require('../engine/variable'); const log = require('../util/log'); class Cloud { + /** + * @typedef updateVariable + * @param {string} name The name of the cloud variable to update on the server + * @param {(string | number)} value The value to update the cloud variable with. + */ + + /** + * A cloud data provider, responsible for managing the connection to the + * cloud data server and for posting data about cloud data activity to + * this IO device. + * @typedef {object} CloudProvider + * @property {updateVariable} updateVariable A function which sends a cloud variable + * update to the cloud data server. + * @property {Function} requestCloseConnection A function which closes + * the connection to the cloud data server. + */ + + /** + * Part of a cloud io data post indicating a cloud variable update. + * @typedef {object} VarUpdateData + * @property {string} name The name of the variable to update + * @property {(number | string)} value The scalar value to update the variable with + */ + + /** + * A cloud io data post message. + * @typedef {object} CloudIOData + * @property {VarUpdateData} varUpdate A {@link VarUpdateData} message indicating + * a cloud variable update + */ + + + /** + * Cloud IO Device responsible for sending and receiving messages from + * cloud provider (mananging the cloud server connection) and interacting + * with cloud variables in the current project. + */ constructor () { /** * Reference to the cloud data provider, responsible for mananging * the web socket connection to the cloud data server. - * @type{!object} + * @type {?CloudProvider} */ this.provider = null; /** * Reference to the stage target which owns the cloud variables * in the project. - * @type{!Target} + * @type {?Target} */ this.stage = null; } /** * Set a reference to the cloud data provider. - * @param {object} provider The cloud data provider + * @param {CloudProvider} provider The cloud data provider */ setProvider (provider) { this.provider = provider; @@ -43,7 +74,7 @@ class Cloud { /** * Handle incoming data to this io device. - * @param {object} data The data to process + * @param {CloudIOData} data The {@link CloudIOData} object to process */ postData (data) { if (data.varUpdate) { @@ -66,8 +97,8 @@ class Cloud { /** * Update a cloud variable in the runtime based on the message received * from the cloud provider. - * @param {object} varUpdate Data describing a cloud variable update received - * from the cloud data provider. + * @param {VarUpdateData} varUpdate A {@link VarUpdateData} object describing + * a cloud variable update received from the cloud data provider. */ updateCloudVariable (varUpdate) { const varName = varUpdate.name;