diff --git a/.github/workflows/build_server.yml b/.github/workflows/build_server.yml index bb692f3d..80890af9 100644 --- a/.github/workflows/build_server.yml +++ b/.github/workflows/build_server.yml @@ -32,7 +32,7 @@ jobs: repository: DJ2LS/FreeDATA - name: Set up Python 3.11 - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.11" diff --git a/documentation/FreeDATA-protocols.md b/documentation/FreeDATA-protocols.md index 68bf5ded..8cf833d8 100644 --- a/documentation/FreeDATA-protocols.md +++ b/documentation/FreeDATA-protocols.md @@ -1,6 +1,7 @@ # FreeDATA - Protocols ## ARQ Sessions + An ARQ Session represents a reliable data transmission session from a sending station (A) to a receiving station (B). It uses automatic repeat request on top of different codec2 modes according to the transmission channel conditions. So lets say A wants to send some data to B. A typical scenario would be like this: @@ -22,22 +23,19 @@ ISS->(1)IRS:BURST (ID, offset, payload),(ID, offset, payload),(ID, offset, paylo IRS->(1)ISS:DATA ACK NACK (ID, next_offset, speed level, frames, snr) ``` - ### Frame details - #### SESSION_OPEN_REQ ISS sends this first DATAC13 Mode (12 bytes) -|field|bytes| -|-|-| -|session id|1| -|origin|6| -|destination_crc|3| - +| field | bytes | +| --------------- | ----- | +| session id | 1 | +| origin | 6 | +| destination_crc | 3 | #### SESSION_OPEN_ACK @@ -45,14 +43,13 @@ Sent by the IRS in response to a SESSION_OPEN_REQ DATAC13 Mode (12 bytes) -|field|bytes| -|-|-| -|session id|1| -|origin|6| -|destination_crc|3| -|protocol version|1| -|snr|1| - +| field | bytes | +| ---------------- | ----- | +| session id | 1 | +| origin | 6 | +| destination_crc | 3 | +| protocol version | 1 | +| snr | 1 | #### SESSION_INFO @@ -60,13 +57,12 @@ ISS sends this in response to a SESSION_OPEN_ACK DATAC13 Mode (12 bytes) -|field|bytes| -|-|-| -|session id|1| -|total bytes|4| -|total crc|4| -|snr|1| - +| field | bytes | +| ----------- | ----- | +| session id | 1 | +| total bytes | 4 | +| total crc | 4 | +| snr | 1 | #### SESSION_INFO_ACK @@ -74,14 +70,13 @@ IRS sends this in response to a SESSION_INFO DATAC13 Mode (12 bytes) -|field|bytes| -|-|-| -|session id|1| -|total crc|4| -|snr|1| -|speed level|1| -|frames per burst|1| - +| field | bytes | +| ---------------- | ----- | +| session id | 1 | +| total crc | 4 | +| snr | 1 | +| speed level | 1 | +| frames per burst | 1 | #### Data Burst @@ -92,50 +87,49 @@ Mode according to handshake speed level Frames per burst according to handshake ##### Modulation + Each burst is composed of frames_per_burst frames: |preamble|f1|f2|f3|...|postamble| ##### Each data frame -|field|bytes| -|-|-| -|session id|1| -|offset|4| -|payload|(the remaining payload length)| - +| field | bytes | +| ---------- | ------------------------------ | +| session id | 1 | +| offset | 4 | +| payload | (the remaining payload length) | #### DATA_BURST_ACK Sent by the IRS following successful decoding of burst. -|field|bytes| -|-|-| -|session id|1| -|next offset|4| -|next speed level|1| -|next frames per burst|1| -|snr|1| - +| field | bytes | +| --------------------- | ----- | +| session id | 1 | +| next offset | 4 | +| next speed level | 1 | +| next frames per burst | 1 | +| snr | 1 | #### DATA_BURST_NACK Sent by the IRS following unsuccessful decoding of burst or timeout. -|field|bytes| -|-|-| -|session id|1| -|next offset|4| -|next speed level|1| -|next frames per burst|1| -|snr|1| +| field | bytes | +| --------------------- | ----- | +| session id | 1 | +| next offset | 4 | +| next speed level | 1 | +| next frames per burst | 1 | +| snr | 1 | #### DATA ACK NACK Sent by the IRS after receiving data with a state information. -| field |bytes| -|------------|-| -| session id |1| -| state |1| -| snr |1| \ No newline at end of file +| field | bytes | +| ---------- | ----- | +| session id | 1 | +| state | 1 | +| snr | 1 | diff --git a/gui/electron-builder.json5 b/gui/electron-builder.json5 index 5bcf15e6..13f06861 100644 --- a/gui/electron-builder.json5 +++ b/gui/electron-builder.json5 @@ -19,22 +19,8 @@ "files": [ "dist", "dist-electron", - "../modem/server.dist/", ], - "extraResources": [ - - { - "from": "../modem/server.dist/", - "to": "modem", - "filter": [ - "**/*", - "!**/.git" - ] - - } - ], - "mac": { "target": [ diff --git a/gui/package.json b/gui/package.json index cbb24998..36ec6202 100644 --- a/gui/package.json +++ b/gui/package.json @@ -2,7 +2,7 @@ "name": "FreeDATA", "description": "FreeDATA", "private": true, - "version": "0.11.1-alpha.3", + "version": "0.12.1-alpha", "main": "dist-electron/main/index.js", "scripts": { "start": "vite", @@ -32,7 +32,6 @@ }, "homepage": "https://freedata.app", "dependencies": { - "@electron/asar": "3.2.7", "@electron/notarize": "2.2.0", "@electron/universal": "2.0.0", "@popperjs/core": "2.11.8", @@ -53,14 +52,9 @@ "mime": "4.0.1", "nconf": "^0.12.1", "pinia": "2.1.7", - "pouchdb": "8.0.1", - "pouchdb-browser": "8.0.1", - "pouchdb-find": "8.0.1", - "pouchdb-upsert": "2.2.0", "qth-locator": "2.1.0", - "sass": "1.66.1", "socket.io": "4.7.2", - "uuid": "9.0.1", + "uuid": "^9.0.1", "vue": "3.3.12", "vue-chartjs": "5.3.0", "vuemoji-picker": "0.2.0" @@ -68,7 +62,7 @@ "devDependencies": { "@types/nconf": "^0.10.6", "@typescript-eslint/eslint-plugin": "6.17.0", - "@vitejs/plugin-vue": "4.5.2", + "@vitejs/plugin-vue": "5.0.3", "electron": "28.1.3", "electron-builder": "24.9.1", "eslint": "8.56.0", @@ -80,7 +74,7 @@ "eslint-plugin-promise": "6.1.1", "eslint-plugin-vue": "9.20.1", "typescript": "5.3.3", - "vite": "5.0.10", + "vite": "5.0.12", "vite-plugin-electron": "0.28.0", "vite-plugin-electron-renderer": "0.14.5", "vitest": "1.0.2", diff --git a/gui/src/components/chat_conversations.vue b/gui/src/components/chat_conversations.vue index 29884103..d6eec968 100644 --- a/gui/src/components/chat_conversations.vue +++ b/gui/src/components/chat_conversations.vue @@ -6,14 +6,9 @@ setActivePinia(pinia); import { useChatStore } from "../store/chatStore.js"; const chat = useChatStore(pinia); -import { - getNewMessagesByDXCallsign, - resetIsNewMessage, -} from "../js/chatHandler"; function chatSelected(callsign) { chat.selectedCallsign = callsign.toUpperCase(); - // scroll message container to bottom var messageBody = document.getElementById("message-container"); if (messageBody != null) { @@ -21,27 +16,6 @@ function chatSelected(callsign) { messageBody.scrollTop = messageBody.scrollHeight - messageBody.clientHeight; } - if (getNewMessagesByDXCallsign(callsign)[1] > 0) { - let messageArray = getNewMessagesByDXCallsign(callsign)[2]; - console.log(messageArray); - - for (const key in messageArray) { - resetIsNewMessage(messageArray[key].uuid, false); - } - } - - try { - chat.beaconLabelArray = Object.values( - chat.sorted_beacon_list[chat.selectedCallsign].timestamp, - ); - chat.beaconDataArray = Object.values( - chat.sorted_beacon_list[chat.selectedCallsign].snr, - ); - } catch (e) { - console.log("beacon data not fetched: " + e); - chat.beaconLabelArray = []; - chat.beaconDataArray = []; - } }