cc 2024-03-11 01:47:50 +08:00
parent 6fb47d8a1f
commit fb6d40571c
8 changed files with 938 additions and 86 deletions

19
package-lock.json generated
View File

@ -8,7 +8,9 @@
"name": "iar", "name": "iar",
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"@highlightjs/vue-plugin": "^2.1.0",
"element-plus": "^2.6.1", "element-plus": "^2.6.1",
"highlight.js": "^11.9.0",
"sass": "^1.71.1", "sass": "^1.71.1",
"vue": "^3.4.19", "vue": "^3.4.19",
"vue-router": "^4.3.0" "vue-router": "^4.3.0"
@ -435,6 +437,15 @@
"resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz",
"integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q=="
}, },
"node_modules/@highlightjs/vue-plugin": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@highlightjs/vue-plugin/-/vue-plugin-2.1.0.tgz",
"integrity": "sha512-E+bmk4ncca+hBEYRV2a+1aIzIV0VSY/e5ArjpuSN9IO7wBJrzUE2u4ESCwrbQD7sAy+jWQjkV5qCCWgc+pu7CQ==",
"peerDependencies": {
"highlight.js": "^11.0.1",
"vue": "^3"
}
},
"node_modules/@jridgewell/sourcemap-codec": { "node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15", "version": "1.4.15",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
@ -1022,6 +1033,14 @@
"node": ">= 6" "node": ">= 6"
} }
}, },
"node_modules/highlight.js": {
"version": "11.9.0",
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz",
"integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==",
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/immutable": { "node_modules/immutable": {
"version": "4.3.5", "version": "4.3.5",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz",

View File

@ -9,7 +9,9 @@
"preview": "vite preview" "preview": "vite preview"
}, },
"dependencies": { "dependencies": {
"@highlightjs/vue-plugin": "^2.1.0",
"element-plus": "^2.6.1", "element-plus": "^2.6.1",
"highlight.js": "^11.9.0",
"sass": "^1.71.1", "sass": "^1.71.1",
"vue": "^3.4.19", "vue": "^3.4.19",
"vue-router": "^4.3.0" "vue-router": "^4.3.0"

View File

@ -29,30 +29,7 @@ export const DEVICE_MODEL = {
//#define BANKMGMTDEF_FLAVOR_AM_D454_FET 0x08000021 //#define BANKMGMTDEF_FLAVOR_AM_D454_FET 0x08000021
//#define BANKMGMTDEF_FLAVOR_AM_D454_TRIAC 0x08000022 //#define BANKMGMTDEF_FLAVOR_AM_D454_TRIAC 0x08000022
export const DefaultValue = { export const DIGITAL_INPUT_FUNCTION = {
NormallyOpen: 0x02,
NormallyClose: 0x82,
}
export function NEW_DIGITAL_INTPUT(PinID) {
return {
Pin: PinID,
Func: "Null",
P5Addr: 0,
ConfFlags: DefaultValue.NormallyOpen,
Options: 0x00,
LightScene: {
Name: 'SmartCircuitToggle',
SuiteID: 0,
SceneID: 0,
LogicalCircuitID: 0,
GuideID: 0,
RotateSceneCnt: 2,
RotateSceneID: [0, 1, 2, 3]
}
};
};
export const DIGITAL_INTPUT_FUNCTION = {
Null: "空", Null: "空",
LightScene: "灯光场景", LightScene: "灯光场景",
EntryDoor: "房门门磁", EntryDoor: "房门门磁",
@ -66,18 +43,124 @@ export const DIGITAL_INTPUT_FUNCTION = {
ConnectingDoor: "连通门门磁", ConnectingDoor: "连通门门磁",
}; };
export const DIGITAL_INTPUT_LIGHT_SCENE = { export const DIGITAL_OUTPUT_FUNCTION = {
Null: "空",
DigitalOutput: "普通输出",
LightOutput: "灯光输出",
};
export const VIRTUAL_OUTPUT_FUNCTION = {
Null: "空",
GuideOutput: "参考回路",
};
export const DIGITAL_INPUT_LIGHT_SCENE = {
LightsAllOn_Room: "灯光全开", LightsAllOn_Room: "灯光全开",
LightsAllOff_Room: "灯光全关", LightsAllOff_Room: "灯光全关",
LightsAllOn_Suite: "套房灯光全开", LightsAllOn_Suite: "套房灯光全开",
LightsAllOff_Suite: "套房灯光全关", LightsAllOff_Suite: "套房灯光全关",
DimSet: "调光设定", DimSet: "调光设定",
DimToggle: "调光切换", DimToggle: "调光切换",
LightCtr: "灯光控制", // LightCtr: "灯光控制",
LightSceneClear: "灯光场景清除", LightSceneClear: "灯光场景清除",
LightSceneSet: "灯光场景设定", LightSceneSet: "灯光场景设定",
SceneClear: "场景清除", // SceneClear: "场景清除",
SmartCircuitToggle: "智能回路切换", SmartCircuitToggle: "智能回路切换",
SmartSceneRotate: "智能场景循环", SmartSceneRotate: "智能场景循环",
SmartSceneToggle: "智能场景切换", SmartSceneToggle: "智能场景切换",
}; };
export const DefaultValue = {
NormallyOpen: 0x02,
NormallyClose: 0x82,
}
export function NEW_DIGITAL_INPUT(PinID) {
return {
Pin: PinID,
Func: "Null",
P5Addr: 0,
ConfFlags: DefaultValue.NormallyOpen,
Options: 0x00,
LightScene: {
Name: 'SmartCircuitToggle',
LCFlag: 0,
Circuit: 0,
Level: 0,
SuiteID: 0,
SceneID: 0,
LogicalCircuitID: 0,
GuideID: 0,
RotateSceneCnt: 2,
RotateSceneID: [0, 1, 2, 3]
}
};
};
export function NEW_DIGITAL_OUTPUT(PinID) {
return {
Pin: PinID,
Func: "Null",
LightOutput: {
Welcome: false,
WelcomeStaff: false,
WelcomeStaffDelayMin: 0,
WelcomeGuest: false,
WelcomeGuestDelayMin: 0,
LogicalCircuitList: [0, 0, 0, 0],
SceneList: [{
Enable: false,
Value: false,
}, {
Enable: false,
Value: false,
}, {
Enable: false,
Value: false,
}, {
Enable: false,
Value: false,
}, {
Enable: false,
Value: false,
}, {
Enable: false,
Value: false,
}, {
Enable: false,
Value: false,
}, {
Enable: false,
Value: false,
}, {
Enable: false,
Value: false,
}, {
Enable: false,
Value: false,
}, {
Enable: false,
Value: false,
}, {
Enable: false,
Value: false,
}, {
Enable: false,
Value: false,
}, {
Enable: false,
Value: false,
}, {
Enable: false,
Value: false,
}, {
Enable: false,
Value: false,
}],
},
DigitalOutput: {
ConfFlags: 0x00,
PI5_Ofs: 0x00,
BitMask: 0x00,
},
};
};

View File

@ -5,10 +5,8 @@ import App from './App.vue'
import ElementPlus from 'element-plus' import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css' import 'element-plus/dist/index.css'
import router from './router' import router from './router'
import 'highlight.js/styles/androidstudio.css'
import 'highlight.js/lib/common'
import hljsVuePlugin from '@highlightjs/vue-plugin'
createApp(App).use(ElementPlus).use(router).mount('#app') createApp(App).use(ElementPlus).use(router).use(hljsVuePlugin).mount('#app')
// import 'highlight.js/styles/atom-one-dark.css'
// import 'highlight.js/lib/common'
// import hljsVuePlugin from '@highlightjs/vue-plugin'
// createApp(App).use(ElementPlus).use(router).use(hljsVuePlugin).mount('#app')

View File

@ -26,8 +26,8 @@ body {
margin: 0; margin: 0;
display: flex; display: flex;
place-items: center; place-items: center;
min-width: 320px; width: 100%;
min-height: 100vh; height: 100vh;
} }
h1 { h1 {
@ -59,10 +59,10 @@ button:focus-visible {
} }
#app { #app {
max-width: 1280px; margin: 0;
margin: 0 auto;
padding: 2rem;
text-align: center; text-align: center;
width: 100%;
height: 100%;
} }
@media (prefers-color-scheme: light) { @media (prefers-color-scheme: light) {
@ -77,3 +77,20 @@ button:focus-visible {
background-color: #f9f9f9; background-color: #f9f9f9;
} }
} }
.el-header {
display:flex;
align-items: center;
justify-content: center;
border-bottom: 1px solid #f2f2f2;
}
.el-container {
height: 100%;
}
.el-form-item {
margin-top: 18px;
}
.el-form-item__content {
>span {
margin: 0 20px;
}
}

View File

@ -11,9 +11,9 @@
<el-icon><star-filled /></el-icon> <el-icon><star-filled /></el-icon>
</el-divider> </el-divider>
<el-form-item v-for="(dix, key, index) in device.DIGITAL_INTPUT" :key="index" :label="key"> <el-form-item v-for="(dix, key, index) in device.DIGITAL_INPUT" :key="index" :label="key">
<el-select v-model="dix.Func"> <el-select v-model="dix.Func">
<el-option v-for="(func_label, func_value, func_index) in DIGITAL_INTPUT_FUNCTION" :key="func_index" <el-option v-for="(func_label, func_value, func_index) in DIGITAL_INPUT_FUNCTION" :key="func_index"
:label="func_label" :value="func_value" /> :label="func_label" :value="func_value" />
</el-select> </el-select>
<div v-if="dix.Func === 'RingBell'"> <div v-if="dix.Func === 'RingBell'">
@ -46,9 +46,9 @@
<div v-if="dix.Func === 'LightScene'"> <div v-if="dix.Func === 'LightScene'">
灯光场景配置 灯光场景配置
<el-select v-model="dix.LightScene.Name"> <el-select v-model="dix.LightScene.Name">
<el-option v-for="(scene_name, scene_value, scene_index) in DIGITAL_INTPUT_LIGHT_SCENE" <el-option v-for="(scene_name, scene_value, scene_index) in DIGITAL_INPUT_LIGHT_SCENE"
:key="scene_index" :label="scene_name" :value="scene_value" /> :key="scene_index" :label="scene_name" :value="scene_value" />
/></el-select> </el-select>
<div v-if="dix.LightScene.Name === 'LightsAllOn_Suite' || <div v-if="dix.LightScene.Name === 'LightsAllOn_Suite' ||
dix.LightScene.Name === 'LightsAllOff_Suite' dix.LightScene.Name === 'LightsAllOff_Suite'
"> ">
@ -58,16 +58,71 @@
</div> </div>
<div v-if="dix.LightScene.Name === 'DimSet'"> <div v-if="dix.LightScene.Name === 'DimSet'">
<el-form-item> <el-form-item>
<span>信号发送地址</span><el-input-number v-model="dix.P5Addr" :min="1" :max="99999" /> <span>信号发送地址</span><el-input-number v-model="dix.P5Addr" :min="0" :max="99999" />
<span>LCflag</span><el-input-number v-model="dix.LightScene.LCFlag" :min="1" :max="99999" />
<span>回路</span><el-input-number v-model="dix.LightScene.Circuit" :min="1" :max="99999" />
<span>Level</span><el-input-number v-model="dix.LightScene.Level" :min="1" :max="99999" />
</el-form-item>
</div>
<div v-if="dix.LightScene.Name === 'DimToggle'">
<el-form-item>
<span>信号发送地址</span><el-input-number v-model="dix.P5Addr" :min="0" :max="99999" />
<span>回路</span><el-input-number v-model="dix.LightScene.Circuit" :min="1" :max="99999" />
</el-form-item>
</div>
<!-- <div v-if="dix.LightScene.Name === 'LightCtr'">
<el-form-item>
<span>信号发送地址</span><el-input-number v-model="dix.P5Addr" :min="0" :max="99999" />
<span>LCflag</span><el-input-number v-model="dix.P5Addr" :min="1" :max="99999" /> <span>LCflag</span><el-input-number v-model="dix.P5Addr" :min="1" :max="99999" />
<span>回路</span><el-input-number v-model="dix.P5Addr" :min="1" :max="99999" /> <span>回路</span><el-input-number v-model="dix.P5Addr" :min="1" :max="99999" />
<span>Level</span><el-input-number v-model="dix.P5Addr" :min="1" :max="99999" /> <span>Level</span><el-input-number v-model="dix.P5Addr" :min="1" :max="99999" />
</el-form-item> </el-form-item>
</div> -->
<div v-if="dix.LightScene.Name === 'LightSceneClear' || dix.LightScene.Name === 'LightSceneSet'">
<el-form-item>
<span>场景ID</span><el-input-number v-model="dix.LightScene.SceneID" :min="0" :max="48" />
</el-form-item>
</div> </div>
<!-- <div v-if="dix.LightScene.Name === 'SceneClear'">
<el-form-item>
<span>信号发送地址</span><el-input-number v-model="dix.P5Addr" :min="0" :max="99999" />
<span>LCflag</span><el-input-number v-model="dix.P5Addr" :min="1" :max="99999" />
<span>回路</span><el-input-number v-model="dix.P5Addr" :min="1" :max="99999" />
<span>Level</span><el-input-number v-model="dix.P5Addr" :min="1" :max="99999" />
</el-form-item>
</div> -->
<div v-if="dix.LightScene.Name === 'SmartCircuitToggle'">
<el-form-item>
<span>信号发送地址</span><el-input-number v-model="dix.P5Addr" :min="0" :max="99999" />
<span>逻辑回路ID</span><el-input-number v-model="dix.LightScene.LogicalCircuitID" :min="1"
:max="99999" />
<span>参考回路ID</span><el-input-number v-model="dix.LightScene.GuideID" :min="1" :max="16" />
</el-form-item>
</div>
<div v-if="dix.LightScene.Name === 'SmartSceneRotate'">
<el-form-item>
<span>信号发送地址</span><el-input-number v-model="dix.P5Addr" :min="0" :max="99999" />
<span>场景数量</span><el-input-number v-model="dix.LightScene.RotateSceneCnt" :min="2" :max="4" />
<span>场景1</span><el-input-number v-model="dix.LightScene.RotateSceneID[0]" :min="0" :max="48" />
<span>场景2</span><el-input-number v-model="dix.LightScene.RotateSceneID[1]" :min="0" :max="48" />
<span v-if="dix.LightScene.RotateSceneCnt > 2">3</span><el-input-number
v-model="dix.LightScene.RotateSceneID[2]" :min="0" :max="48"
v-if="dix.LightScene.RotateSceneCnt > 2" />
<span v-if="dix.LightScene.RotateSceneCnt > 3">4</span><el-input-number
v-model="dix.LightScene.RotateSceneID[3]" :min="0" :max="48"
v-if="dix.LightScene.RotateSceneCnt > 3" />
<span>参考回路ID</span><el-input-number v-model="dix.LightScene.GuideID" :min="1" :max="16" />
</el-form-item>
</div>
<div v-if="dix.LightScene.Name === 'SmartSceneToggle'">
<el-form-item>
<span>信号发送地址</span><el-input-number v-model="dix.P5Addr" :min="0" :max="99999" />
<span>场景ID</span><el-input-number v-model="dix.LightScene.SceneID" :min="0" :max="48" />
<span>参考回路ID</span><el-input-number v-model="dix.LightScene.GuideID" :min="1" :max="16" />
</el-form-item>
</div>
</div> </div>
</el-form-item> </el-form-item>
@ -77,38 +132,572 @@
<el-icon><star-filled /></el-icon> <el-icon><star-filled /></el-icon>
</el-divider> </el-divider>
<el-form-item v-for="(dix, key, index) in device.DIGITAL_OUTPUT" :key="index" :label="key">
<el-select v-model="dix.Func">
<el-option v-for="(func_label, func_value, func_index) in DIGITAL_OUTPUT_FUNCTION" :key="func_index"
:label="func_label" :value="func_value" />
</el-select>
<div v-if="dix.Func === 'DigitalOutput'">
<el-form-item>
<span>PI5_Ofs</span>
<el-input-number v-model="dix.DigitalOutput.PI5_Ofs" :min="0" :max="99999" :controls="false" />
<span>BitMask</span>
<el-input-number v-model="dix.DigitalOutput.BitMask" :min="0" :max="99999" :controls="false" />
<span>ConfFlags</span>
<el-input-number v-model="dix.DigitalOutput.ConfFlags" :min="0" :max="99999" :controls="false" />
</el-form-item>
</div>
<div v-if="dix.Func === 'LightOutput'">
<el-form-item>
<span>欢迎模式</span>
<el-switch v-model="dix.LightOutput.Welcome" inline-prompt active-text="" inactive-text="" />
<span>员工欢迎模式</span>
<el-switch v-model="dix.LightOutput.WelcomeStaff" inline-prompt active-text=""
inactive-text="取消" />
<el-input-number v-if="dix.LightOutput.WelcomeStaff" v-model="dix.LightOutput.WelcomeStaffDelayMin"
:min="0" :max="99999" :controls="false" />
<span>客人欢迎模式</span>
<el-switch v-model="dix.LightOutput.WelcomeGuest" inline-prompt active-text=""
inactive-text="取消" />
<el-input-number v-if="dix.LightOutput.WelcomeGuest" v-model="dix.LightOutput.WelcomeGuestDelayMin"
:min="0" :max="99999" :controls="false" />
</el-form-item>
<el-form-item>
<span v-for="(_, index) in dix.LightOutput.LogicalCircuitList" :key="index">
参与的第{{ index }}个逻辑回路ID
<el-input-number v-model="dix.LightOutput.LogicalCircuitList[index]" :min="0" :max="99999" />
</span>
</el-form-item>
<el-form-item>
<span v-for="(_, index) in dix.LightOutput.SceneList" :key="index">
场景{{ index.toString().padStart(2, '0') }}
<el-switch v-model="dix.LightOutput.SceneList[index].Enable" inline-prompt active-text=""
inactive-text="取消" />
<el-switch v-if="dix.LightOutput.SceneList[index].Enable"
v-model="dix.LightOutput.SceneList[index].Value" inline-prompt active-text="开灯"
inactive-text="关灯" style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949" />
</span>
</el-form-item>
</div>
</el-form-item>
<el-divider>
<el-icon><star-filled /></el-icon>
虚拟回路配置
<el-icon><star-filled /></el-icon>
</el-divider>
<el-form-item v-for="(dix, key, index) in device.VIRTUAL_OUTPUT" :key="index" :label="key">
<el-select v-model="dix.Func">
<el-option v-for="(func_label, func_value, func_index) in VIRTUAL_OUTPUT_FUNCTION" :key="func_index"
:label="func_label" :value="func_value" />
</el-select>
<div v-if="dix.Func === 'GuideOutput'">
<el-form-item>
<span>欢迎模式</span>
<el-switch v-model="dix.LightOutput.Welcome" inline-prompt active-text="" inactive-text="" />
<span>员工欢迎模式</span>
<el-switch v-model="dix.LightOutput.WelcomeStaff" inline-prompt active-text=""
inactive-text="取消" />
<el-input-number v-if="dix.LightOutput.WelcomeStaff" v-model="dix.LightOutput.WelcomeStaffDelayMin"
:min="0" :max="99999" :controls="false" />
<span>客人欢迎模式</span>
<el-switch v-model="dix.LightOutput.WelcomeGuest" inline-prompt active-text=""
inactive-text="取消" />
<el-input-number v-if="dix.LightOutput.WelcomeGuest" v-model="dix.LightOutput.WelcomeGuestDelayMin"
:min="0" :max="99999" :controls="false" />
</el-form-item>
<el-form-item>
<span v-for="(_, index) in dix.LightOutput.LogicalCircuitList" :key="index">
参与的第{{ index }}个逻辑回路ID
<el-input-number v-model="dix.LightOutput.LogicalCircuitList[index]" :min="0" :max="99999" />
</span>
</el-form-item>
<el-form-item>
<span v-for="(_, index) in dix.LightOutput.SceneList" :key="index">
场景{{ index.toString().padStart(2, '0') }}
<el-switch v-model="dix.LightOutput.SceneList[index].Enable" inline-prompt active-text=""
inactive-text="取消" />
<el-switch v-if="dix.LightOutput.SceneList[index].Enable"
v-model="dix.LightOutput.SceneList[index].Value" inline-prompt active-text="开灯"
inactive-text="关灯" style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949" />
</span>
</el-form-item>
</div>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="onSubmit"></el-button> <el-button type="primary" @click="onSubmit"></el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-dialog v-model="dialogVisible" title="生成代码">
<div class="hljs-container" codetype="Personality.c">
<el-button type="primary" @click="iar_code_copy"></el-button>
<highlightjs language="c" :autodetect="false" :code="code"></highlightjs>
</div>
</el-dialog>
</template> </template>
<script setup> <script setup>
import { ref, reactive } from "vue"; import { ref, reactive } from "vue";
import { StarFilled } from "@element-plus/icons-vue"; import { StarFilled } from "@element-plus/icons-vue";
import { DEVICE_MODEL, NEW_DIGITAL_INTPUT, DIGITAL_INTPUT_FUNCTION, DefaultValue, DIGITAL_INTPUT_LIGHT_SCENE } from '../js/INNcom.js' import { DEVICE_MODEL, NEW_DIGITAL_INPUT, DIGITAL_INPUT_FUNCTION, DefaultValue, DIGITAL_INPUT_LIGHT_SCENE, NEW_DIGITAL_OUTPUT, DIGITAL_OUTPUT_FUNCTION, VIRTUAL_OUTPUT_FUNCTION } from '../js/INNcom.js'
import { ElMessage } from 'element-plus'
const dialogVisible = ref(false);
// //
const device = reactive({ const device = reactive({
ADDR: 0, ADDR: 1,
MODEL: DEVICE_MODEL['X10'], MODEL: DEVICE_MODEL['X10'],
DIGITAL_INTPUT: { DIGITAL_INPUT: {
DI1: NEW_DIGITAL_INTPUT(1), DI1: NEW_DIGITAL_INPUT(1),
DI2: NEW_DIGITAL_INTPUT(2), DI2: NEW_DIGITAL_INPUT(2),
DI3: NEW_DIGITAL_INTPUT(3), DI3: NEW_DIGITAL_INPUT(3),
DI4: NEW_DIGITAL_INTPUT(4), DI4: NEW_DIGITAL_INPUT(4),
DI5: NEW_DIGITAL_INTPUT(5), DI5: NEW_DIGITAL_INPUT(5),
DI6: NEW_DIGITAL_INTPUT(6), DI6: NEW_DIGITAL_INPUT(6),
DI7: NEW_DIGITAL_INTPUT(7), DI7: NEW_DIGITAL_INPUT(7),
DI8: NEW_DIGITAL_INTPUT(8), DI8: NEW_DIGITAL_INPUT(8),
},
DIGITAL_OUTPUT: {
DO1: NEW_DIGITAL_OUTPUT(1),
DO2: NEW_DIGITAL_OUTPUT(2),
DO3: NEW_DIGITAL_OUTPUT(3),
DO4: NEW_DIGITAL_OUTPUT(4),
DO5: NEW_DIGITAL_OUTPUT(5),
DO6: NEW_DIGITAL_OUTPUT(6),
DO7: NEW_DIGITAL_OUTPUT(7),
DO8: NEW_DIGITAL_OUTPUT(8),
},
VIRTUAL_OUTPUT: {
VIR1: NEW_DIGITAL_OUTPUT(9),
VIR2: NEW_DIGITAL_OUTPUT(10),
VIR3: NEW_DIGITAL_OUTPUT(11),
VIR4: NEW_DIGITAL_OUTPUT(12),
VIR5: NEW_DIGITAL_OUTPUT(13),
VIR6: NEW_DIGITAL_OUTPUT(14),
VIR7: NEW_DIGITAL_OUTPUT(15),
VIR8: NEW_DIGITAL_OUTPUT(16),
} }
}); });
let code = '';
const onSubmit = () => { const onSubmit = () => {
console.log(device); let code71 = '';
Object.values(device.DIGITAL_INPUT).forEach((dix) => {
switch (dix.Func) {
case 'LightScene':
switch (dix.LightScene) {
case 'LightsAllOn_Room':
code71 += `REG_HELPER_LowVoltageInput_LightsAllOn_Room(${dix.Pin});\n `
break;
case 'LightsAllOff_Room':
code71 += `REG_HELPER_LowVoltageInput_LightsAllOff_Room(${dix.Pin});\n `
break;
case 'LightsAllOn_Suite':
code71 += `REG_HELPER_LowVoltageInput_LightsAllOn_Suite(${dix.Pin},${dix.SuiteID});\n `
break;
case 'LightsAllOff_Suite':
code71 += `REG_HELPER_LowVoltageInput_LightsAllOff_Suite(${dix.Pin},${dix.SuiteID});\n `
break;
case 'DimSet':
code71 += `REG_HELPER_LowVoltageInput_DimSet(${dix.Pin},${dix.P5Addr},${dix.LCFlag},${dix.Circuit},${dix.Level});\n `
break;
case 'DimToggle':
code71 += `REG_HELPER_LowVoltageInput_DimToggle(${dix.Pin},${dix.P5Addr},${dix.Circuit});\n `
break;
// case 'LightCtr':
// code71 += `REG_HELPER_LowVoltageInput_LightCtr(${dix.Pin},${dix.P5Addr},${dix.Circuit});\n `
// break;
case 'LightSceneClear':
code71 += `REG_HELPER_LowVoltageInput_LightSceneClear(${dix.Pin},${dix.SceneID});\n `
break;
case 'LightSceneSet':
code71 += `REG_HELPER_LowVoltageInput_LightSceneSet(${dix.Pin},${dix.SceneID});\n `
break;
// case 'SceneClear':
// code71 += `REG_HELPER_LowVoltageInput_LightSceneSet(${dix.Pin},${dix.SceneID});\n `
// break;
case 'SmartCircuitToggle':
code71 += `REG_HELPER_LowVoltageInput_SmartCircuitToggle(${dix.Pin},${dix.P5Addr},${dix.LogicalCircuitID},${dix.GuideID});\n `
break;
case 'SmartSceneRotate':
code71 += `REG_HELPER_LowVoltageInput_SmartSceneRotate(${dix.Pin},${dix.P5Addr},0,${dix.RotateSceneCnt},${dix.GuideID},${dix.RotateSceneID[0]},${dix.RotateSceneID[1]},${dix.RotateSceneID[2]},${dix.RotateSceneID[3]});\n `
break;
case 'SmartSceneToggle':
code71 += `REG_HELPER_LowVoltageInput_SmartSceneToggle(${dix.Pin},${dix.P5Addr},0,${dix.SceneID},${dix.GuideID});\n `
break;
default:
break;
}
break;
case 'EntryDoor':
code71 += `REG_HELPER_LowVoltage_Input_StdCommonCtrl_EntryDoor(${dix.Pin},${dix.Pin},${dix.ConfFlags});\n `
break;
case 'RingBell':
code71 += `REG_HELPER_LowVoltage_Input_RingBell(${dix.Pin},${dix.Pin},${dix.P5Addr},${dix.ConfFlags},${dix.Options});\n `
break;
case 'PIR_MotionSensor':
code71 += `REG_HELPER_LowVoltage_Input_StdCommonCtrl_PIR_MotionSensor(${dix.Pin},${dix.Pin},${dix.ConfFlags});\n `
break;
case 'WindowBalcony':
code71 += `REG_HELPER_LowVoltage_Input_StdCommonCtrl_WindowBalcony(${dix.Pin},${dix.Pin},${dix.ConfFlags});\n `
break;
case 'SmokeSensor':
code71 += `REG_HELPER_LowVoltage_Input_StdCommonCtrl_SmokeSensor(${dix.Pin},${dix.Pin},${dix.ConfFlags});\n `
break;
case 'MinBarDoor':
code71 += `REG_HELPER_LowVoltage_Input_StdCommonCtrl_MinBarDoor(${dix.Pin},${dix.Pin},${dix.ConfFlags});\n `
break;
case 'KeyTagSensor':
code71 += `REG_HELPER_LowVoltage_Input_StdCommonCtrl_KeyTagSensor(${dix.Pin},${dix.Pin},${dix.ConfFlags});\n `
break;
case 'CommonDoor':
code71 += `REG_HELPER_LowVoltage_Input_StdCommonCtrl_CommonDoor(${dix.Pin},${dix.Pin},${dix.ConfFlags});\n `
break;
case 'ConnectingDoor':
code71 += `REG_HELPER_LowVoltage_Input_StdCommonCtrl_ConnectingDoor(${dix.Pin},${dix.Pin},${dix.ConfFlags});\n `
break;
default:
break;
}
});
let code72 = '';
let code73 = '';
Object.values(device.DIGITAL_OUTPUT).forEach((dix) => {
switch (dix.Func) {
case 'DigitalOutput':
code72 += `REG_HELPER_Output_PI5_Bit(${dix.Pin}, ${dix.PI5_Ofs}, ${dix.BitMask}, ${dix.ConfFlags});\n `
break;
case 'LightOutput':
code73 += `
Reg.BaseOutput.DriverIndex = CBL32_LO_DRIVER_INDEX_LV_INDICATOR;
Reg.BaseOutput.OutputSetup = CBL32_DO_OUTPUT_SETUP_DEFAULT;
Reg.BaseOutput.DriverPinIndex = P5_HELPER_MapOutput_CBL_to_Pin(${dix.Pin});
Reg.BaseOutput.WelcomeSetup = ${dix.LightOutput.Welcome ? 0x80 : 0x00};
Reg.BaseOutput.WelcomeStaff = ${dix.LightOutput.WelcomeStaff ? 0x80 : 0x00};
Reg.BaseOutput.WelcomeGuest = ${dix.LightOutput.WelcomeGuest ? 0x80 : 0x00};
Reg.BaseOutput.Min_GracePeriodStaff = ${dix.LightOutput.WelcomeStaffDelayMin};
Reg.BaseOutput.Min_GracePeriodGuest = ${dix.LightOutput.WelcomeGuestDelayMin};
Reg.DimSetup = 0;\n `
dix.LightOutput.LogicalCircuitList.forEach((s, index) => {
if (s > 0) {
code73 += `Reg.LogCircuit[${index}] = ${s};\n `
}
});
dix.LightOutput.SceneList.forEach((s, index) => {
if (s.Enable) {
code73 += `Reg.SceneLevel[${index<10?' ':''}${index}] = ${s.Enable ? 0x80 : 0x00} + CBL32_LS_LEVEL_PERCENT(${s.Value ? 100 : 0});\n `
}
});
code73 += `APPMAP_RegistryCreate(REG_GRPKEY_LIGHT_OUTPUT, ${dix.Pin}, (BYTE *)&Reg, sizeof(Reg));\n `
break;
default:
break;
}
});
Object.values(device.VIRTUAL_OUTPUT).forEach((dix) => {
if (dix.Func === 'GuideOutput') {
code73 += `
Reg.BaseOutput.DriverIndex = CBL32_LO_DRIVER_INDEX_LV_INDICATOR;
Reg.BaseOutput.OutputSetup = CBL32_DO_OUTPUT_SETUP_DEFAULT;
Reg.BaseOutput.DriverPinIndex = P5_HELPER_MapOutput_CBL_to_Pin(${dix.Pin});
Reg.BaseOutput.WelcomeSetup = ${dix.LightOutput.Welcome ? 0x80 : 0x00};
Reg.BaseOutput.WelcomeStaff = ${dix.LightOutput.WelcomeStaff ? 0x80 : 0x00};
Reg.BaseOutput.WelcomeGuest = ${dix.LightOutput.WelcomeGuest ? 0x80 : 0x00};
Reg.BaseOutput.Min_GracePeriodStaff = ${dix.LightOutput.WelcomeStaffDelayMin};
Reg.BaseOutput.Min_GracePeriodGuest = ${dix.LightOutput.WelcomeGuestDelayMin};
Reg.DimSetup = 0;\n `
dix.LightOutput.LogicalCircuitList.forEach((s, index) => {
if (s > 0) {
code73 += `Reg.LogCircuit[${index}] = ${s};\n `
}
});
dix.LightOutput.SceneList.forEach((s, index) => {
if (s.Enable) {
code73 += `Reg.SceneLevel[${index<10?' ':''}${index}] = ${s.Enable ? 0x80 : 0x00} + CBL32_LS_LEVEL_PERCENT(${s.Value ? 100 : 0});\n `
}
});
code73 += `APPMAP_RegistryCreate(REG_GRPKEY_LIGHT_OUTPUT, ${dix.Pin}, (BYTE *)&Reg, sizeof(Reg));\n `
}
});
code = `//**********************************************************************************************************************
// FileName : Personality.c
// Author(s) : Philipp Roosli, Michael Sobanko
// Description: Template for the personalization of a device.
//**********************************************************************************************************************
// Version History:
// 2011/10/14 Base release.
//**********************************************************************************************************************
#include "string.h"
#include "APPMAP_Main.h"
#include "Personality.h"
//**********************************************************************************************************************
//
//**********************************************************************************************************************
#define APP_ID_DEVICE_TYPE \
${ device.MODEL }
#define P5_ADDRESS \
${ device.ADDR }
//**********************************************************************************************************************
// Constants
//**********************************************************************************************************************
const char LogicalDeviceIdentifier[] = "X10.r4";
void RunObject(TYPE_CBL32_OBJECT *ptrObj)
{
TYPE_REG_ENTRY *RegEntry;
TYPE_CBL32_LIGHT_OUTPUT_DATA *LOData;
if (ptrObj)
{
RegEntry = ptrObj->ptrRegEntry;
LOData = (TYPE_CBL32_LIGHT_OUTPUT_DATA *)ptrObj->ptrData;
switch (RegEntry->RegGroup)
{
case (REG_GRPKEY_IO >> 8):
switch (RegEntry->RegKey)
{
case (REG_GRPKEY_DIGITAL_INPUT & 0xFF):
case (REG_GRPKEY_ANALOG_OUTPUT & 0xFF):
CBL_HELPER_DefaultIO_RunObject(ptrObj);
break;
case (REG_GRPKEY_DIGITAL_OUTPUT & 0xFF):
{
if (LOData->BOData.DriverCtrlCmd == CBL32_IRAS_CTRL_CMD_SET_VALUE)
{
switch (RegEntry->RegIdx)
{
case 1: // Pin 3
case 2: // Pin 4
case 3: // Pin 5
case 4: // Pin 6
case 5: // Pin 7
case 6: // Pin 8
case 7: // Pin 9
case 8: // Pin 10
// HW_API_02_9593_DigitalOut_Control(P5_HELPER_MapOutput_CBL_to_Pin(RegEntry->RegIdx), (BOOL)LOData->BOData.DriverCtrlValue, BOConfig->DriverConfFlags);
break;
}
}
}
break;
case (REG_GRPKEY_LIGHT_OUTPUT & 0xFF):
break;
case (REG_GRPKEY_ANALOG_INPUT & 0xFF):
break;
}
break;
}
}
} }
void BootRegistry7_1(BYTE IOMAP)
{
${ code71 }
}
void BootRegistry7_2(BYTE IOMAP)
{
${ code72 }
}
void BootRegistry7_3(BYTE IOMAP)
{
TYPE_CBL32REG_7_3_LIGHT_OUTPUT Reg;
memcpy(&Reg, (BYTE *)&REGBOOT_7_3_DEFAULT, sizeof(Reg));
${ code73 }
}
void ProcessVFI(TYPE_VFI *VFI)
{}
void ApplicationStartup(void)
{
BOOL flagBootAppRegistry = TRUE;
TYPE_REG_ENTRY *RegEntry = (TYPE_REG_ENTRY *)APPMAP_WRAPPER_BootLoaderSendMsg(CBL32_MSG_REGISTRY_SEARCH_UNIQUE, (REG_GRPKEY_EXT_DEV_NAME << 8), 0);
if (RegEntry)
{
if (strcmp(LogicalDeviceIdentifier, (char *)(RegEntry->RegData)) == 0)
{
flagBootAppRegistry = FALSE;
}
}
if (flagBootAppRegistry)
{
BootRegistry(0);
}
}
void ProcessP5Reply(BYTE *Data, BYTE DataLen)
{}
void ProcessPAE(BYTE P5Addr, USHORT Param)
{}
void ProcessP5Interceptor(TYPE_CBL32_P5_PRETTY_PACKET *P5PP, ULONG Flags)
{}
ULONG ProcessMsg(ULONG Msg, ULONG P1, ULONG P2)
{
switch (Msg)
{
case CBL32_MSG_4MSEC_TICK:
break;
case CBL32_MSG_32MSEC_TICK:
break;
case CBL32_MSG_PROCESS_VFI:
ProcessVFI((TYPE_VFI *)P1);
break;
}
return (CBL_HELPER_DefaultIO_ProcessMsg(Msg, P1, P2));
}
void ReconfRegistry(BYTE ReconfOp)
{}
void BootRegistry(BYTE IOMAP)
{
if (IOMAP < 1)
{
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_FLAG0, 0x10);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_FLAG1, 0x0F);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_STATION_ADDR, P5_ADDRESS);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_FLAG3, 0x0F);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_MULTICAST_MAP, 0xFF);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_MC_FOCUS_0, 0x00);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_MC_FOCUS_1, 0x00);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_APP_SERVER_0 + 0, 0x00);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_APP_SERVER_0 + 1, 0x00);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_APP_SERVER_0 + 2, 0x00);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_APP_SERVER_0 + 3, 0x00);
REG_HELPER_FormatRegistry();
}
BootRegistry7_1(IOMAP);
BootRegistry7_2(IOMAP);
BootRegistry7_3(IOMAP);
APPMAP_RegistryCreateUKey_String((REG_GRPKEY_PROPERTY_ID << 8), (const char *)("2.17.3.15"));
APPMAP_RegistryCreateUKey_String((REG_GRPKEY_PART_NO << 8), (const char *)("01-8201.C"));
APPMAP_RegistryCreateUKey_String((REG_GRPKEY_ENGINEER << 8), (const char *)("Greg.Howard@inncom.com"));
APPMAP_RegistryCreateUKey_String((REG_GRPKEY_ENG_MEMO << 8), (const char *)(""));
APPMAP_RegistryCreateUKey_String((REG_GRPKEY_EXT_DEV_NAME << 8), LogicalDeviceIdentifier);
APPMAP_RegistryCreateUKey_String((REG_GRPKEY_INNCONTROL_OPTIONS << 8), (const char *)("Dev_LVIO_2_17_3_15.cfg"));
}
`
dialogVisible.value = true;
}
const iar_code_copy = async () => {
try {
await navigator.clipboard.writeText(code);
ElMessage({
message: '已复制',
type: 'success',
})
} catch (err) {
console.error('无法复制: ', err);
}
};
</script> </script>
<style>
.hljs-container {
position: relative;
display: block;
/* width: 600px; */
padding: 30px 5px 2px;
overflow-x: hidden;
line-height: 20px;
text-align: left;
background: #21252b;
box-shadow: 0 10px 30px 0 rgb(0 0 0 / 40%);
}
/** 3个点 */
.hljs-container::before {
position: absolute;
top: 10px;
left: 15px;
width: 12px;
height: 12px;
overflow: visible;
font-weight: 700;
font-size: 16px;
line-height: 12px;
white-space: nowrap;
text-indent: 75px;
background-color: #fc625d;
border-radius: 16px;
box-shadow: 20px 0 #fdbc40, 40px 0 #35cd4b;
content: attr(codetype);
}
/** 滚动条 */
:deep(.hljs) {
overflow-x: auto;
}
:deep(.hljs::-webkit-scrollbar) {
width: 12px !important;
height: 12px !important;
}
:deep(.hljs::-webkit-scrollbar-thumb) {
height: 30px !important;
background: #d1d8e6;
background-clip: content-box;
border: 2px solid transparent;
border-radius: 19px;
opacity: 0.8;
}
:deep(.hljs::-webkit-scrollbar-thumb:hover) {
background: #a5b3cf;
background-clip: content-box;
border: 2px solid transparent;
}
:deep(.hljs::-webkit-scrollbar-track-piece) {
width: 30px;
height: 30px;
background: #333;
}
::-webkit-scrollbar-button {
display: none;
}
/** 复制样式 */
.hljs-copy {
position: absolute;
top: 50px;
right: 30px;
display: none;
padding: 0 10px;
color: #66a9ff;
font-size: 10px;
background-color: #ecf5ff;
border-radius: 3px;
cursor: pointer;
}
</style>

View File

@ -152,27 +152,6 @@
const dialogVisible = ref(false); const dialogVisible = ref(false);
const di_light_scene = {
LightsAllOn_Room: "灯光全开",
LightsAllOff_Room: "灯光全关",
LightsAllOn_Suite: "套房灯光全开",
LightsAllOff_Suite: "套房灯光全关",
DimSet: "调光设定",
DimToggle: "调光切换",
LightCtr: "灯光控制",
LightSceneClear: "灯光场景清除",
LightSceneSet: "灯光场景设定",
SceneClear: "场景清除",
SmartCircuitToggle: "智能回路切换",
SmartSceneRotate: "智能场景循环",
SmartSceneToggle: "智能场景切换",
};
const DIGITAL_INPUT_ITEM = {
func: 'null',
}
const mode = 'BANKMGMTDEF_FLAVOR_AM_X10'; const mode = 'BANKMGMTDEF_FLAVOR_AM_X10';
const form = reactive({ const form = reactive({
address: 0, address: 0,

165
x10.c Normal file
View File

@ -0,0 +1,165 @@
//**********************************************************************************************************************
// FileName : Personality.c
// Author(s) : Philipp Roosli, Michael Sobanko
// Description: Template for the personalization of a device.
//**********************************************************************************************************************
// Version History:
// 2011/10/14 Base release.
//**********************************************************************************************************************
#include "string.h"
#include "APPMAP_Main.h"
#include "Personality.h"
//**********************************************************************************************************************
// 设备型号及地址
//**********************************************************************************************************************
#define APP_ID_DEVICE_TYPE \
${ device.MODEL }
#define P5_ADDRESS \
${ device.ADDR }
//**********************************************************************************************************************
// Constants
//**********************************************************************************************************************
const char LogicalDeviceIdentifier[] = "X10.r4";
void RunObject(TYPE_CBL32_OBJECT *ptrObj)
{
TYPE_REG_ENTRY *RegEntry;
TYPE_CBL32_LIGHT_OUTPUT_DATA *LOData;
if (ptrObj)
{
RegEntry = ptrObj->ptrRegEntry;
LOData = (TYPE_CBL32_LIGHT_OUTPUT_DATA *)ptrObj->ptrData;
switch (RegEntry->RegGroup)
{
case (REG_GRPKEY_IO >> 8):
switch (RegEntry->RegKey)
{
case (REG_GRPKEY_DIGITAL_INPUT & 0xFF):
case (REG_GRPKEY_ANALOG_OUTPUT & 0xFF):
CBL_HELPER_DefaultIO_RunObject(ptrObj);
break;
case (REG_GRPKEY_DIGITAL_OUTPUT & 0xFF):
{
if (LOData->BOData.DriverCtrlCmd == CBL32_IRAS_CTRL_CMD_SET_VALUE)
{
switch (RegEntry->RegIdx)
{
case 1: // Pin 3
case 2: // Pin 4
case 3: // Pin 5
case 4: // Pin 6
case 5: // Pin 7
case 6: // Pin 8
case 7: // Pin 9
case 8: // Pin 10
// HW_API_02_9593_DigitalOut_Control(P5_HELPER_MapOutput_CBL_to_Pin(RegEntry->RegIdx), (BOOL)LOData->BOData.DriverCtrlValue, BOConfig->DriverConfFlags);
break;
}
}
}
break;
case (REG_GRPKEY_LIGHT_OUTPUT & 0xFF):
break;
case (REG_GRPKEY_ANALOG_INPUT & 0xFF):
break;
}
break;
}
}
}
void BootRegistry7_1(BYTE IOMAP)
{
${ code71 }
}
void BootRegistry7_2(BYTE IOMAP)
{
${ code72 }
}
void BootRegistry7_3(BYTE IOMAP)
{
TYPE_CBL32REG_7_3_LIGHT_OUTPUT Reg;
memcpy(&Reg, (BYTE *)&REGBOOT_7_3_DEFAULT, sizeof(Reg));
${ code73 }
}
void ProcessVFI(TYPE_VFI *VFI)
{}
void ApplicationStartup(void)
{
BOOL flagBootAppRegistry = TRUE;
TYPE_REG_ENTRY *RegEntry = (TYPE_REG_ENTRY *)APPMAP_WRAPPER_BootLoaderSendMsg(CBL32_MSG_REGISTRY_SEARCH_UNIQUE, (REG_GRPKEY_EXT_DEV_NAME << 8), 0);
if (RegEntry)
{
if (strcmp(LogicalDeviceIdentifier, (char *)(RegEntry->RegData)) == 0)
{
flagBootAppRegistry = FALSE;
}
}
if (flagBootAppRegistry)
{
BootRegistry(0);
}
}
void ProcessP5Reply(BYTE *Data, BYTE DataLen)
{}
void ProcessPAE(BYTE P5Addr, USHORT Param)
{}
void ProcessP5Interceptor(TYPE_CBL32_P5_PRETTY_PACKET *P5PP, ULONG Flags)
{}
ULONG ProcessMsg(ULONG Msg, ULONG P1, ULONG P2)
{
switch (Msg)
{
case CBL32_MSG_4MSEC_TICK:
break;
case CBL32_MSG_32MSEC_TICK:
break;
case CBL32_MSG_PROCESS_VFI:
ProcessVFI((TYPE_VFI *)P1);
break;
}
return (CBL_HELPER_DefaultIO_ProcessMsg(Msg, P1, P2));
}
void ReconfRegistry(BYTE ReconfOp)
{}
void BootRegistry(BYTE IOMAP)
{
if (IOMAP < 1)
{
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_FLAG0, 0x10);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_FLAG1, 0x0F);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_STATION_ADDR, P5_ADDRESS);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_FLAG3, 0x0F);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_MULTICAST_MAP, 0xFF);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_MC_FOCUS_0, 0x00);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_MC_FOCUS_1, 0x00);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_APP_SERVER_0 + 0, 0x00);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_APP_SERVER_0 + 1, 0x00);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_APP_SERVER_0 + 2, 0x00);
APPMAP_EEPROM_Write(EEPROM_OFS_STD_NSPB_BLOCK_CACHED_NV + P5STM_NSPB_CACHE_APP_SERVER_0 + 3, 0x00);
REG_HELPER_FormatRegistry();
}
BootRegistry7_1(IOMAP);
BootRegistry7_2(IOMAP);
BootRegistry7_3(IOMAP);
APPMAP_RegistryCreateUKey_String((REG_GRPKEY_PROPERTY_ID << 8), (const char *)("2.17.3.15"));
APPMAP_RegistryCreateUKey_String((REG_GRPKEY_PART_NO << 8), (const char *)("01-8201.C"));
APPMAP_RegistryCreateUKey_String((REG_GRPKEY_ENGINEER << 8), (const char *)("Greg.Howard@inncom.com"));
APPMAP_RegistryCreateUKey_String((REG_GRPKEY_ENG_MEMO << 8), (const char *)(""));
APPMAP_RegistryCreateUKey_String((REG_GRPKEY_EXT_DEV_NAME << 8), LogicalDeviceIdentifier);
APPMAP_RegistryCreateUKey_String((REG_GRPKEY_INNCONTROL_OPTIONS << 8), (const char *)("Dev_LVIO_2_17_3_15.cfg"));
}