async function setMissionPattern()

in other/train-to-cloud-city/devices/rfid/utils/firestoreHelpers.js [24:101]


async function setMissionPattern(chunk, reader) {
  const motor = await getMotor();
  const matchingTag = await getMatchingTag({ chunk });
  const proposalRef = db.collection("global").doc("proposal");
  const mailboxRef = db.collection("global").doc("input_mailbox");

  /**
   * PATTERNS TO SELECT FROM
   * high complex - 3300348D69E3
   * medium complex -  33003558732D
   * low complex - 0D0088F32B5D
   */
  if (matchingTag?.pattern_slug) {
    try {
      await proposalRef.set(
        { pattern_slug: matchingTag?.pattern_slug },
        { merge: false },
      );

      queueMessageToPublish("mission-selected", {
        chunk,
        pattern_slug: matchingTag?.pattern_slug,
      });

      console.log(
        `Mission has been read: ${JSON.stringify(matchingTag?.pattern_slug)}. Waiting for event input trigger.`,
      );
    } catch (error) {
      console.error(error);
    }
    return;
  }

  /**
   * EVENT RFID TAG (let's go magic wand)
   * check-pattern (GO) - 0D00876E4DA9
   * stop 330034B6B607
   * reset - 330035D3B96C
   */
  if (matchingTag?.event_slug) {
    const { event_slug } = matchingTag;

    if (event_slug === "check-pattern") {
      console.log("Checking pattern ....");

      queueMessageToPublish("begin-game", {
        pattern_slug: matchingTag?.pattern_slug,
      });

      try {
        await mailboxRef.set({ input: "check_pattern" });
        motor?.setPower(25); // move towards station
        console.log(
          `Input mailbox has been triggered to check pattern and now moving to station.`,
        );
      } catch (error) {
        motor?.stop();
        console.error(error);
      }
    }

    if (event_slug === "reset") {
      console.log("Admin reset registered.");
      try {
        motor?.stop();
        await mailboxRef.set({ input: "reset" });
        motor?.setPower(25);
      } catch (error) {
        console.error(error);
      }
    }

    if (event_slug === "stop") {
      console.log("Admin stop registered.");
      motor?.stop();
    }
  }
}