fix: 修复jtag未认证的问题
This commit is contained in:
		@@ -93,7 +93,7 @@ const props = withDefaults(defineProps<SevenSegmentDisplayProps>(), {
 | 
			
		||||
  size: 1,
 | 
			
		||||
  color: "red",
 | 
			
		||||
  AFTERGLOW_BUFFER_SIZE: 1, // 默认存储槽大小为100
 | 
			
		||||
  AFTERGLOW_UPDATE_INTERVAL: 1, // 默认更新间隔为2毫秒
 | 
			
		||||
  AFTERGLOW_UPDATE_INTERVAL: 5, // 默认更新间隔为2毫秒
 | 
			
		||||
  cathodeType: "common", // 默认为共阴极
 | 
			
		||||
  pins: () => [
 | 
			
		||||
    { pinId: "a", constraint: "", x: 10, y: 170 }, // a段
 | 
			
		||||
@@ -156,13 +156,16 @@ let updateIntervalTimer: number | null = null;
 | 
			
		||||
function isSegmentActive(
 | 
			
		||||
  segment: "a" | "b" | "c" | "d" | "e" | "f" | "g" | "dp",
 | 
			
		||||
): boolean {
 | 
			
		||||
  return segmentStates.value[segment] || afterglowBuffers.value[segment].some(state => state);
 | 
			
		||||
  return (
 | 
			
		||||
    segmentStates.value[segment] ||
 | 
			
		||||
    afterglowBuffers.value[segment].some((state) => state)
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 更新引脚状态的函数
 | 
			
		||||
function updateSegmentStates() {
 | 
			
		||||
  // 先获取COM口状态
 | 
			
		||||
  const comPin = props.pins.find(p => p.pinId === "COM");
 | 
			
		||||
  const comPin = props.pins.find((p) => p.pinId === "COM");
 | 
			
		||||
  let comActive = true;
 | 
			
		||||
  if (comPin && comPin.constraint) {
 | 
			
		||||
    const comState = getConstraintState(comPin.constraint);
 | 
			
		||||
@@ -182,7 +185,8 @@ function updateSegmentStates() {
 | 
			
		||||
    if (["a", "b", "c", "d", "e", "f", "g", "dp"].includes(pin.pinId)) {
 | 
			
		||||
      // 如果constraint为空,则默认为未激活状态
 | 
			
		||||
      if (!pin.constraint) {
 | 
			
		||||
        segmentStates.value[pin.pinId as keyof typeof segmentStates.value] = false;
 | 
			
		||||
        segmentStates.value[pin.pinId as keyof typeof segmentStates.value] =
 | 
			
		||||
          false;
 | 
			
		||||
        continue;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
@@ -195,9 +199,10 @@ function updateSegmentStates() {
 | 
			
		||||
        // 共阳极: 低电平激活段
 | 
			
		||||
        newState = pinState === "low";
 | 
			
		||||
      }
 | 
			
		||||
      
 | 
			
		||||
 | 
			
		||||
      // 更新当前状态
 | 
			
		||||
      segmentStates.value[pin.pinId as keyof typeof segmentStates.value] = newState && comActive;
 | 
			
		||||
      segmentStates.value[pin.pinId as keyof typeof segmentStates.value] =
 | 
			
		||||
        newState && comActive;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -207,12 +212,14 @@ function updateAfterglowBuffers() {
 | 
			
		||||
  for (const segmentId of ["a", "b", "c", "d", "e", "f", "g", "dp"]) {
 | 
			
		||||
    const typedSegmentId = segmentId as keyof typeof segmentStates.value;
 | 
			
		||||
    const currentState = segmentStates.value[typedSegmentId];
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    // 将当前状态添加到存储槽的开头
 | 
			
		||||
    afterglowBuffers.value[segmentId].unshift(currentState);
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    // 如果存储槽超过了最大容量,移除最旧的状态
 | 
			
		||||
    if (afterglowBuffers.value[segmentId].length > props.AFTERGLOW_BUFFER_SIZE) {
 | 
			
		||||
    if (
 | 
			
		||||
      afterglowBuffers.value[segmentId].length > props.AFTERGLOW_BUFFER_SIZE
 | 
			
		||||
    ) {
 | 
			
		||||
      afterglowBuffers.value[segmentId].pop();
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@@ -221,7 +228,7 @@ function updateAfterglowBuffers() {
 | 
			
		||||
// 开始余晖更新间隔
 | 
			
		||||
function startAfterglowUpdates() {
 | 
			
		||||
  if (updateIntervalTimer) return;
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  updateIntervalTimer = window.setInterval(() => {
 | 
			
		||||
    updateSegmentStates();
 | 
			
		||||
  }, props.AFTERGLOW_UPDATE_INTERVAL);
 | 
			
		||||
@@ -247,9 +254,11 @@ function onConstraintChange(constraint: string, level: string) {
 | 
			
		||||
onMounted(() => {
 | 
			
		||||
  // 初始化余晖存储槽
 | 
			
		||||
  for (const segmentId of ["a", "b", "c", "d", "e", "f", "g", "dp"]) {
 | 
			
		||||
    afterglowBuffers.value[segmentId] = Array(props.AFTERGLOW_BUFFER_SIZE).fill(false);
 | 
			
		||||
    afterglowBuffers.value[segmentId] = Array(props.AFTERGLOW_BUFFER_SIZE).fill(
 | 
			
		||||
      false,
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  updateSegmentStates();
 | 
			
		||||
  onConstraintStateChange(onConstraintChange);
 | 
			
		||||
  startAfterglowUpdates();
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,6 @@ export const useEquipments = defineStore("equipments", () => {
 | 
			
		||||
    1000,
 | 
			
		||||
    new Error("JtagClient Mutex Timeout!"),
 | 
			
		||||
  );
 | 
			
		||||
  const jtagClient = AuthManager.createAuthenticatedJtagClient();
 | 
			
		||||
 | 
			
		||||
  // Matrix Key
 | 
			
		||||
  const matrixKeyStates = reactive(new Array<boolean>(16).fill(false));
 | 
			
		||||
@@ -36,7 +35,6 @@ export const useEquipments = defineStore("equipments", () => {
 | 
			
		||||
    1000,
 | 
			
		||||
    new Error("Matrixkeyclient Mutex Timeout!"),
 | 
			
		||||
  );
 | 
			
		||||
  const matrixKeypadClient = AuthManager.createAuthenticatedMatrixKeyClient();
 | 
			
		||||
 | 
			
		||||
  // Power
 | 
			
		||||
  const powerClientMutex = withTimeout(
 | 
			
		||||
@@ -44,7 +42,6 @@ export const useEquipments = defineStore("equipments", () => {
 | 
			
		||||
    1000,
 | 
			
		||||
    new Error("Matrixkeyclient Mutex Timeout!"),
 | 
			
		||||
  );
 | 
			
		||||
  const powerClient = AuthManager.createAuthenticatedPowerClient();
 | 
			
		||||
 | 
			
		||||
  // Enable Setting
 | 
			
		||||
  const enableJtagBoundaryScan = ref(false);
 | 
			
		||||
@@ -105,6 +102,7 @@ export const useEquipments = defineStore("equipments", () => {
 | 
			
		||||
  async function jtagBoundaryScan() {
 | 
			
		||||
    const release = await jtagClientMutex.acquire();
 | 
			
		||||
    try {
 | 
			
		||||
      const jtagClient = AuthManager.createAuthenticatedJtagClient();
 | 
			
		||||
      const portStates = await jtagClient.boundaryScanLogicalPorts(
 | 
			
		||||
        boardAddr.value,
 | 
			
		||||
        boardPort.value,
 | 
			
		||||
@@ -125,6 +123,7 @@ export const useEquipments = defineStore("equipments", () => {
 | 
			
		||||
 | 
			
		||||
  async function jtagUploadBitstream(bitstream: File): Promise<boolean> {
 | 
			
		||||
    try {
 | 
			
		||||
      const jtagClient = AuthManager.createAuthenticatedJtagClient();
 | 
			
		||||
      const resp = await jtagClient.uploadBitstream(
 | 
			
		||||
        boardAddr.value,
 | 
			
		||||
        toFileParameterOrUndefined(bitstream),
 | 
			
		||||
@@ -140,6 +139,7 @@ export const useEquipments = defineStore("equipments", () => {
 | 
			
		||||
  async function jtagDownloadBitstream(): Promise<boolean> {
 | 
			
		||||
    const release = await jtagClientMutex.acquire();
 | 
			
		||||
    try {
 | 
			
		||||
      const jtagClient = AuthManager.createAuthenticatedJtagClient();
 | 
			
		||||
      const resp = await jtagClient.downloadBitstream(
 | 
			
		||||
        boardAddr.value,
 | 
			
		||||
        boardPort.value,
 | 
			
		||||
@@ -157,6 +157,7 @@ export const useEquipments = defineStore("equipments", () => {
 | 
			
		||||
  async function jtagGetIDCode(isQuiet: boolean = false): Promise<number> {
 | 
			
		||||
    const release = await jtagClientMutex.acquire();
 | 
			
		||||
    try {
 | 
			
		||||
      const jtagClient = AuthManager.createAuthenticatedJtagClient();
 | 
			
		||||
      const resp = await jtagClient.getDeviceIDCode(
 | 
			
		||||
        boardAddr.value,
 | 
			
		||||
        boardPort.value,
 | 
			
		||||
@@ -173,6 +174,7 @@ export const useEquipments = defineStore("equipments", () => {
 | 
			
		||||
  async function jtagSetSpeed(speed: number): Promise<boolean> {
 | 
			
		||||
    const release = await jtagClientMutex.acquire();
 | 
			
		||||
    try {
 | 
			
		||||
      const jtagClient = AuthManager.createAuthenticatedJtagClient();
 | 
			
		||||
      const resp = await jtagClient.setSpeed(
 | 
			
		||||
        boardAddr.value,
 | 
			
		||||
        boardPort.value,
 | 
			
		||||
@@ -191,6 +193,7 @@ export const useEquipments = defineStore("equipments", () => {
 | 
			
		||||
    const release = await matrixKeypadClientMutex.acquire();
 | 
			
		||||
    console.log("set Key !!!!!!!!!!!!");
 | 
			
		||||
    try {
 | 
			
		||||
      const matrixKeypadClient = AuthManager.createAuthenticatedMatrixKeyClient();
 | 
			
		||||
      const resp = await matrixKeypadClient.setMatrixKeyStatus(
 | 
			
		||||
        boardAddr.value,
 | 
			
		||||
        boardPort.value,
 | 
			
		||||
@@ -209,6 +212,7 @@ export const useEquipments = defineStore("equipments", () => {
 | 
			
		||||
    const release = await matrixKeypadClientMutex.acquire();
 | 
			
		||||
    try {
 | 
			
		||||
      if (enable) {
 | 
			
		||||
        const matrixKeypadClient = AuthManager.createAuthenticatedMatrixKeyClient();
 | 
			
		||||
        const resp = await matrixKeypadClient.enabelMatrixKey(
 | 
			
		||||
          boardAddr.value,
 | 
			
		||||
          boardPort.value,
 | 
			
		||||
@@ -216,6 +220,7 @@ export const useEquipments = defineStore("equipments", () => {
 | 
			
		||||
        enableMatrixKey.value = resp;
 | 
			
		||||
        return resp;
 | 
			
		||||
      } else {
 | 
			
		||||
        const matrixKeypadClient = AuthManager.createAuthenticatedMatrixKeyClient();
 | 
			
		||||
        const resp = await matrixKeypadClient.disableMatrixKey(
 | 
			
		||||
          boardAddr.value,
 | 
			
		||||
          boardPort.value,
 | 
			
		||||
@@ -235,6 +240,7 @@ export const useEquipments = defineStore("equipments", () => {
 | 
			
		||||
  async function powerSetOnOff(enable: boolean) {
 | 
			
		||||
    const release = await powerClientMutex.acquire();
 | 
			
		||||
    try {
 | 
			
		||||
      const powerClient = AuthManager.createAuthenticatedPowerClient();
 | 
			
		||||
      const resp = await powerClient.setPowerOnOff(
 | 
			
		||||
        boardAddr.value,
 | 
			
		||||
        boardPort.value,
 | 
			
		||||
@@ -262,7 +268,6 @@ export const useEquipments = defineStore("equipments", () => {
 | 
			
		||||
    jtagBitstream,
 | 
			
		||||
    jtagBoundaryScanFreq,
 | 
			
		||||
    jtagClientMutex,
 | 
			
		||||
    jtagClient,
 | 
			
		||||
    jtagUploadBitstream,
 | 
			
		||||
    jtagDownloadBitstream,
 | 
			
		||||
    jtagGetIDCode,
 | 
			
		||||
@@ -272,13 +277,11 @@ export const useEquipments = defineStore("equipments", () => {
 | 
			
		||||
    enableMatrixKey,
 | 
			
		||||
    matrixKeyStates,
 | 
			
		||||
    matrixKeypadClientMutex,
 | 
			
		||||
    matrixKeypadClient,
 | 
			
		||||
    matrixKeypadEnable,
 | 
			
		||||
    matrixKeypadSetKeyStates,
 | 
			
		||||
 | 
			
		||||
    // Power
 | 
			
		||||
    enablePower,
 | 
			
		||||
    powerClient,
 | 
			
		||||
    powerClientMutex,
 | 
			
		||||
    powerSetOnOff,
 | 
			
		||||
  };
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user