{"version":3,"sources":["jsdelivr-header.js","/npm/@chirimen/sgp40@1.0.1/index.js"],"names":[],"mappings":"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","file":"/npm/@chirimen/sgp40@1.0.1/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@chirimen/sgp40@1.0.1/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.SGP40 = factory());\n})(this, (function () { 'use strict';\n\n\t// SGP40 driver for WebI2C\n\t// https://www.waveshare.com/wiki/Environment_Sensor_HAT\n\t// の\n\t// https://files.waveshare.com/upload/b/bc/Environment_Sensor_HAT_Code.7z\n\t// をベースに移植\n\t// 2023/12/13 Ported by Satoru Takagi\n\n\tvar SGP40 = function (i2cPort, slaveAddress) {\n\t\tif (!slaveAddress) {\n\t\t\tslaveAddress = 0x59;\n\t\t}\n\t\tthis.i2cPort = i2cPort;\n\t\tthis.i2cSlave = null;\n\t\tthis.slaveAddress = slaveAddress;\n\t\tthis.ch0 = null;\n\t\tthis.ch1 = null;\n\n\t\t// CONSTS\n\t\tthis.SGP40_CMD_FEATURE_SET = [0x20, 0x2f];\n\t\tthis.SGP40_CMD_MEASURE_TEST = [0x28, 0x0e];\n\t\tthis.SGP40_CMD_SOFT_RESET = [0x00, 0x06];\n\t\tthis.SGP40_CMD_HEATER_OFF = [0x36, 0x15];\n\t\tthis.SGP40_CMD_MEASURE_RAW = [0x26, 0x0f];\n\t\tthis.CRC_TABLE = [\n\t\t\t0, 49, 98, 83, 196, 245, 166, 151, 185, 136, 219, 234, 125, 76, 31, 46, 67,\n\t\t\t114, 33, 16, 135, 182, 229, 212, 250, 203, 152, 169, 62, 15, 92, 109, 134,\n\t\t\t183, 228, 213, 66, 115, 32, 17, 63, 14, 93, 108, 251, 202, 153, 168, 197,\n\t\t\t244, 167, 150, 1, 48, 99, 82, 124, 77, 30, 47, 184, 137, 218, 235, 61, 12,\n\t\t\t95, 110, 249, 200, 155, 170, 132, 181, 230, 215, 64, 113, 34, 19, 126, 79,\n\t\t\t28, 45, 186, 139, 216, 233, 199, 246, 165, 148, 3, 50, 97, 80, 187, 138,\n\t\t\t217, 232, 127, 78, 29, 44, 2, 51, 96, 81, 198, 247, 164, 149, 248, 201, 154,\n\t\t\t171, 60, 13, 94, 111, 65, 112, 35, 18, 133, 180, 231, 214, 122, 75, 24, 41,\n\t\t\t190, 143, 220, 237, 195, 242, 161, 144, 7, 54, 101, 84, 57, 8, 91, 106, 253,\n\t\t\t204, 159, 174, 128, 177, 226, 211, 68, 117, 38, 23, 252, 205, 158, 175, 56,\n\t\t\t9, 90, 107, 69, 116, 39, 22, 129, 176, 227, 210, 191, 142, 221, 236, 123,\n\t\t\t74, 25, 40, 6, 55, 100, 85, 194, 243, 160, 145, 71, 118, 37, 20, 131, 178,\n\t\t\t225, 208, 254, 207, 156, 173, 58, 11, 88, 105, 4, 53, 102, 87, 192, 241,\n\t\t\t162, 147, 189, 140, 223, 238, 121, 72, 27, 42, 193, 240, 163, 146, 5, 52,\n\t\t\t103, 86, 120, 73, 26, 43, 188, 141, 222, 239, 130, 179, 224, 209, 70, 119,\n\t\t\t36, 21, 59, 10, 89, 104, 255, 206, 157, 172,\n\t\t];\n\t\tthis.WITHOUT_HUM_COMP = [0x26, 0x0f, 0x80, 0x00, 0xa2, 0x66, 0x66, 0x93]; // default Temperature=25 Humidity=50\n\t\tthis.WITH_HUM_COMP = [0x26, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]; //Manual input\n\t};\n\n\tSGP40.prototype = {\n\t\tsleep: function (ms) {\n\t\t\treturn new Promise((resolve) => {\n\t\t\t\tsetTimeout(resolve, ms);\n\t\t\t});\n\t\t},\n\t\tinit: async function () {\n\t\t\tthis.i2cSlave = await this.i2cPort.open(this.slaveAddress);\n\t\t\t// feature set 0x3220\n\t\t\tawait this.write(this.SGP40_CMD_FEATURE_SET);\n\t\t\tawait this.sleep(250);\n\t\t\tvar Rbuf = await this.Read();\n\t//\t\tconsole.log(\"feature set:\", (Math.floor(Rbuf[0]) << 8) | Rbuf[1]);\n\t\t\tif (((Math.floor(Rbuf[0]) << 8) | Rbuf[1]) != 0x3220) {\n\t\t\t\tconsole.error(\"Self test failed\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Self Test 0xD400\n\t\t\tawait this.write(this.SGP40_CMD_MEASURE_TEST);\n\t\t\tawait this.sleep(250);\n\t\t\tvar Rbuf = await this.Read();\n\t//\t\tconsole.log(\"Self Test  :\", (Math.floor(Rbuf[0]) << 8) | Rbuf[1]);\n\t\t\tif (((Math.floor(Rbuf[0]) << 8) | Rbuf[1]) != 0xd400) {\n\t\t\t\t//0x4B00 is failed,0xD400 pass\n\t\t\t\tconsole.error(\"Self test failed\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\n\t\tRead: async function () {\n\t\t\tawait this.i2cSlave.writeByte(this.slaveAddress);\n\t\t\tvar ans = await this.i2cSlave.readBytes(3);\n\t\t\treturn ans;\n\t\t},\n\n\t\twrite: async function (cmd) {\n\t//\t\tawait this.i2cSlave.write16(cmd);\n\t\t\tawait this.i2cSlave.writeBytes(cmd);\n\t\t},\n\n\t\twrite_block: async function (cmd) {\n\t//\t\tconsole.log(\"write_block:\", cmd);\n\t\t\tawait this.i2cSlave.writeBytes(cmd);\n\t\t},\n\n\t\traw: async function () {\n\t//\t\tconsole.log(\"raw\");\n\t\t\tawait this.write_block(this.WITHOUT_HUM_COMP);\n\t\t\tawait this.sleep(250);\n\t\t\tvar Rbuf = await this.Read();\n\t//\t\tconsole.log(\"raw:\",Rbuf);\n\t\t\treturn (Math.floor(Rbuf[0]) << 8) | Rbuf[1];\n\t\t},\n\n\t\tmeasureRaw: async function (temperature, humidity) {\n\t//\t\tconsole.log(\"measureRaw\");\n\t\t\tvar h = (humidity * 0xffff) / 100;\n\t\t\tvar paramh_h = (h >> 8);\n\t\t\tvar paramh_l = (h & 0xff);\n\t\t\tvar crch = this.__crc(paramh_h, paramh_l);\n\n\t\t\tvar t = ((temperature + 45) * 0xffff) / 175;\n\t\t\tvar paramt_h = (t >> 8);\n\t\t\tvar paramt_l = (t & 0xff);\n\t\t\tvar crct = this.__crc(paramt_h, paramt_l);\n\n\t\t\tthis.WITH_HUM_COMP[2] = paramh_h;\n\t\t\tthis.WITH_HUM_COMP[3] = paramh_l;\n\t\t\tthis.WITH_HUM_COMP[4] = Math.floor(crch);\n\t\t\tthis.WITH_HUM_COMP[5] = paramt_h;\n\t\t\tthis.WITH_HUM_COMP[6] = paramt_l;\n\t\t\tthis.WITH_HUM_COMP[7] = Math.floor(crct);\n\t\t\t//console.log(\"WITH_HUM_COMP:\", this.WITH_HUM_COMP);\n\t\t\tawait this.write_block(this.WITH_HUM_COMP);\n\n\t\t\tawait this.sleep(500);\n\t\t\tvar Rbuf = await this.Read();\n\t//\t\tconsole.log(Rbuf);\n\t\t\treturn (Math.floor(Rbuf[0]) << 8) | Rbuf[1];\n\t\t},\n\n\t\t__crc: function (msb, lsb) {\n\t\t\tvar crc = 0xff;\n\t\t\tcrc ^= msb;\n\t\t\tcrc = this.CRC_TABLE[crc];\n\t\t\tif (lsb) {\n\t\t\t\tcrc ^= lsb;\n\t\t\t\tcrc = this.CRC_TABLE[crc];\n\t\t\t}\n\t\t\treturn crc;\n\t\t},\n\t};\n\n\treturn SGP40;\n\n}));\n"]}