Skip to content
This repository was archived by the owner on Jul 9, 2024. It is now read-only.

Commit b90fb45

Browse files
committed
feat: rename A-GPS to A-GNSS
The endpoints and the implementation in the SDK were renamed. See nrfconnect/sdk-nrf#12568 See NordicSemiconductor/asset-tracker-cloud-docs#840 Closes #594 Closes #590 BREAKING CHANGE: the firmware needs to send requests to property bag agnss
1 parent 20be92c commit b90fb45

21 files changed

Lines changed: 164 additions & 164 deletions

File tree

agps/cacheKey.ts renamed to agnss/cacheKey.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { Static } from '@sinclair/typebox'
2-
import { agpsRequestSchema } from './types.js'
2+
import { agnssRequestSchema } from './types.js'
33

44
export const cacheKey = ({
55
request,
66
binHours,
77
}: {
8-
request: Static<typeof agpsRequestSchema>
8+
request: Static<typeof agnssRequestSchema>
99
binHours: number
1010
}): string => {
1111
const binMs = binHours * 60 * 60 * 1000

agps/types.ts renamed to agnss/types.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Type } from '@sinclair/typebox'
22

3-
export enum AGPSType {
3+
export enum AGNSSType {
44
'UTC parameters' = 1,
55
'Ephemerides' = 2,
66
'Almanac' = 3,
@@ -13,11 +13,11 @@ export enum AGPSType {
1313

1414
const PositiveInteger = Type.Integer({ minimum: 1, title: 'positive integer' })
1515

16-
export const agpsRequestSchema = Type.Object({
16+
export const agnssRequestSchema = Type.Object({
1717
mcc: Type.Integer({ minimum: 100, maximum: 999 }),
1818
mnc: Type.Integer({ minimum: 0, maximum: 99 }),
1919
cell: PositiveInteger,
2020
area: PositiveInteger,
2121
phycell: Type.Optional(PositiveInteger),
22-
types: Type.Array(Type.Enum(AGPSType), { minItems: 1 }),
22+
types: Type.Array(Type.Enum(AGNSSType), { minItems: 1 }),
2323
})

agpsDeviceRequestsHandler/agpsDeviceRequestsHandler.ts renamed to agnssDeviceRequestsHandler/agnssDeviceRequestsHandler.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@ import {
55
StorageSharedKeyCredential,
66
} from '@azure/storage-queue'
77
import { Static } from '@sinclair/typebox'
8-
import { agpsRequestSchema } from '../agps/types.js'
8+
import { agnssRequestSchema } from '../agnss/types.js'
99
import { fromEnv } from '../lib/fromEnv.js'
1010
import { log, logError } from '../lib/log.js'
1111
import { validateWithJSONSchema } from '../lib/validateWithJSONSchema.js'
1212

13-
const validateAgpsRequest = validateWithJSONSchema(agpsRequestSchema)
13+
const validateAgnssRequest = validateWithJSONSchema(agnssRequestSchema)
1414

1515
const config = () =>
1616
fromEnv({
1717
storageAccountName: 'STORAGE_ACCOUNT_NAME',
1818
storageAccessKey: 'STORAGE_ACCESS_KEY',
19-
agpsRequestsQueueName: 'AGPS_REQUESTS_QUEUE_NAME',
19+
agnssRequestsQueueName: 'AGNSS_REQUESTS_QUEUE_NAME',
2020
})({
2121
...process.env,
2222
})
@@ -29,7 +29,7 @@ const config = () =>
2929
*
3030
* The requests are put in a queue for resolving.
3131
*/
32-
const agpsDeviceRequestsHandler: AzureFunction = async (
32+
const agnssDeviceRequestsHandler: AzureFunction = async (
3333
context: Context,
3434
requests: (
3535
| {
@@ -48,21 +48,21 @@ const agpsDeviceRequestsHandler: AzureFunction = async (
4848
let queueClient: QueueClient
4949

5050
try {
51-
const { storageAccountName, storageAccessKey, agpsRequestsQueueName } =
51+
const { storageAccountName, storageAccessKey, agnssRequestsQueueName } =
5252
config()
5353

5454
queueClient = new QueueServiceClient(
5555
`https://${storageAccountName}.queue.core.windows.net`,
5656
new StorageSharedKeyCredential(storageAccountName, storageAccessKey),
57-
).getQueueClient(agpsRequestsQueueName)
57+
).getQueueClient(agnssRequestsQueueName)
5858
await queueClient.create()
5959
} catch (error) {
6060
logError(context)({ error: (error as Error).message })
6161
return
6262
}
6363

6464
// Find A-GNSS requests
65-
const agpsRequests = requests
65+
const agnssRequests = requests
6666
.map((request, i) => ({
6767
request,
6868
deviceId:
@@ -74,22 +74,22 @@ const agpsDeviceRequestsHandler: AzureFunction = async (
7474
string
7575
>,
7676
}))
77-
.filter(({ properties }) => properties.agps === 'get')
77+
.filter(({ properties }) => properties.agnss === 'get')
7878

79-
if (agpsRequests.length === 0) {
79+
if (agnssRequests.length === 0) {
8080
log(context)(`No A-GNSS requests found.`)
8181
return
8282
}
8383

84-
log(context)({ agpsRequests })
84+
log(context)({ agnssRequests })
8585

8686
// Build list of valid requests
8787
const deviceRequests: {
88-
request: Static<typeof agpsRequestSchema>
88+
request: Static<typeof agnssRequestSchema>
8989
deviceId: string
9090
}[] = []
91-
agpsRequests.forEach(({ request, deviceId }) => {
92-
const valid = validateAgpsRequest(request)
91+
agnssRequests.forEach(({ request, deviceId }) => {
92+
const valid = validateAgnssRequest(request)
9393
if ('error' in valid) {
9494
logError(context)(JSON.stringify(valid.error))
9595
return
@@ -120,4 +120,4 @@ const agpsDeviceRequestsHandler: AzureFunction = async (
120120
)
121121
}
122122

123-
export default agpsDeviceRequestsHandler
123+
export default agnssDeviceRequestsHandler
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"eventHubName": "%IOTHUB_EVENTS_EVENT_HUB_NAME%",
88
"connection": "IOTHUB_EVENTS_CONNECTION_STRING",
99
"cardinality": "many",
10-
"consumerGroup": "%AGPS_REQUESTS_IOT_EVENTS_CONSUMER_GROUP_NAME%"
10+
"consumerGroup": "%AGNSS_REQUESTS_IOT_EVENTS_CONSUMER_GROUP_NAME%"
1111
}
1212
],
1313
"scriptFile": "./handler.mjs"
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import handler from "../dist/agnssDeviceRequestsHandler/agnssDeviceRequestsHandler.js";
2+
export default handler;

agpsQueuedDeviceRequestsHandler/agpsQueuedDeviceRequestsHandler.ts renamed to agnssQueuedDeviceRequestsHandler/agnssQueuedDeviceRequestsHandler.ts

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -8,46 +8,46 @@ import {
88
import { Static } from '@sinclair/typebox'
99
import iothubCommon from 'azure-iot-common'
1010
import iothub from 'azure-iothub'
11-
import { cacheKey } from '../agps/cacheKey.js'
12-
import { agpsRequestSchema } from '../agps/types.js'
11+
import { cacheKey } from '../agnss/cacheKey.js'
12+
import { agnssRequestSchema } from '../agnss/types.js'
1313
import { fromEnv } from '../lib/fromEnv.js'
1414
import { log, logError } from '../lib/log.js'
1515
import { parseConnectionString } from '../lib/parseConnectionString.js'
1616

1717
const config = () =>
1818
fromEnv({
19-
binHoursString: 'AGPS_BIN_HOURS',
19+
binHoursString: 'AGNSS_BIN_HOURS',
2020
iotHubConnectionString: 'IOTHUB_CONNECTION_STRING',
2121
cosmosDbConnectionString: 'COSMOSDB_CONNECTION_STRING',
2222
storageAccountName: 'STORAGE_ACCOUNT_NAME',
2323
storageAccessKey: 'STORAGE_ACCESS_KEY',
24-
maxResolutionTimeInMinutes: 'AGPS_MAX_RESOLUTION_TIME_IN_MINUTES',
24+
maxResolutionTimeInMinutes: 'AGNSS_MAX_RESOLUTION_TIME_IN_MINUTES',
2525
initialDelayString: 'INITIAL_DELAY',
2626
delayFactorString: 'DELAY_FACTOR',
27-
agpsRequestsDatabaseName: 'AGPS_REQUESTS_DATABASE_NAME',
28-
agpsRequestsContainerName: 'AGPS_REQUESTS_CONTAINER_NAME',
29-
agpsRequestsQueueName: 'AGPS_REQUESTS_QUEUE_NAME',
30-
agpsRequestsNrfCloudQueueName: 'AGPS_REQUESTS_NRFCLOUD_QUEUE_NAME',
27+
agnssRequestsDatabaseName: 'AGNSS_REQUESTS_DATABASE_NAME',
28+
agnssRequestsContainerName: 'AGNSS_REQUESTS_CONTAINER_NAME',
29+
agnssRequestsQueueName: 'AGNSS_REQUESTS_QUEUE_NAME',
30+
agnssRequestsNrfCloudQueueName: 'AGNSS_REQUESTS_NRFCLOUD_QUEUE_NAME',
3131
})({
32-
AGPS_BIN_HOURS: '1',
33-
AGPS_MAX_RESOLUTION_TIME_IN_MINUTES: '3',
32+
AGNSS_BIN_HOURS: '1',
33+
AGNSS_MAX_RESOLUTION_TIME_IN_MINUTES: '3',
3434
INITIAL_DELAY: '5',
3535
DELAY_FACTOR: '1.5',
3636
...process.env,
3737
})
3838

3939
// Keep a local cache in case many devices requests the same location
40-
export type AGPSDataCache = Static<typeof agpsRequestSchema> & {
40+
export type AGNSSDataCache = Static<typeof agnssRequestSchema> & {
4141
source: string
4242
dataHex?: string[]
4343
unresolved?: boolean
4444
updatedAt: Date
4545
}
46-
const resolvedRequests: Record<string, AGPSDataCache> = {}
46+
const resolvedRequests: Record<string, AGNSSDataCache> = {}
4747

48-
type QueuedAGPSRequest = {
48+
type QueuedAGNSSRequest = {
4949
deviceId: string
50-
request: Static<typeof agpsRequestSchema>
50+
request: Static<typeof agnssRequestSchema>
5151
timestamp: string
5252
delayInSeconds?: number
5353
}
@@ -57,16 +57,16 @@ type QueuedAGPSRequest = {
5757
* a DB or kicking off the resoluting via a third-party API (currently only
5858
* nRF Cloud Assisted GPS Location Service is implemented.)
5959
*/
60-
const agpsQueuedDeviceRequestsHandler: AzureFunction = async (
60+
const agnssQueuedDeviceRequestsHandler: AzureFunction = async (
6161
context: Context,
62-
{ deviceId, request, delayInSeconds, timestamp }: QueuedAGPSRequest,
62+
{ deviceId, request, delayInSeconds, timestamp }: QueuedAGNSSRequest,
6363
): Promise<void> => {
6464
log(context)({ request, deviceId, delayInSeconds, timestamp, context })
6565

6666
let binHours: number
6767
let iotHubClient: iothub.Client
6868
let cosmosDbContainer: Container
69-
let agpsRequestsQueueClient: QueueClient
69+
let agnssRequestsQueueClient: QueueClient
7070
const resolverQueues: QueueClient[] = []
7171
let maxResolutionTimeInSeconds: number
7272
let delayFactor: number
@@ -82,10 +82,10 @@ const agpsQueuedDeviceRequestsHandler: AzureFunction = async (
8282
delayFactorString,
8383
initialDelayString,
8484
cosmosDbConnectionString,
85-
agpsRequestsDatabaseName,
86-
agpsRequestsQueueName,
87-
agpsRequestsContainerName,
88-
agpsRequestsNrfCloudQueueName,
85+
agnssRequestsDatabaseName,
86+
agnssRequestsQueueName,
87+
agnssRequestsContainerName,
88+
agnssRequestsNrfCloudQueueName,
8989
} = config()
9090

9191
binHours = parseInt(binHoursString, 10)
@@ -100,21 +100,21 @@ const agpsQueuedDeviceRequestsHandler: AzureFunction = async (
100100
})
101101

102102
cosmosDbContainer = cosmosClient
103-
.database(agpsRequestsDatabaseName)
104-
.container(agpsRequestsContainerName)
103+
.database(agnssRequestsDatabaseName)
104+
.container(agnssRequestsContainerName)
105105

106-
agpsRequestsQueueClient = new QueueServiceClient(
106+
agnssRequestsQueueClient = new QueueServiceClient(
107107
`https://${storageAccountName}.queue.core.windows.net`,
108108
new StorageSharedKeyCredential(storageAccountName, storageAccessKey),
109-
).getQueueClient(agpsRequestsQueueName)
110-
await agpsRequestsQueueClient.create()
109+
).getQueueClient(agnssRequestsQueueName)
110+
await agnssRequestsQueueClient.create()
111111

112-
const nrfCloudAgpsRequestsQueueClient = new QueueServiceClient(
112+
const nrfCloudAgnssRequestsQueueClient = new QueueServiceClient(
113113
`https://${storageAccountName}.queue.core.windows.net`,
114114
new StorageSharedKeyCredential(storageAccountName, storageAccessKey),
115-
).getQueueClient(agpsRequestsNrfCloudQueueName)
116-
await nrfCloudAgpsRequestsQueueClient.create()
117-
resolverQueues.push(nrfCloudAgpsRequestsQueueClient)
115+
).getQueueClient(agnssRequestsNrfCloudQueueName)
116+
await nrfCloudAgnssRequestsQueueClient.create()
117+
resolverQueues.push(nrfCloudAgnssRequestsQueueClient)
118118

119119
maxResolutionTimeInSeconds = parseInt(maxResolutionTimeInMinutes, 10) * 60
120120
delayFactor = parseFloat(delayFactorString)
@@ -179,11 +179,11 @@ const agpsQueuedDeviceRequestsHandler: AzureFunction = async (
179179
)
180180
await Promise.all(
181181
(resolvedRequests[requestCacheKey]?.dataHex ?? []).map(
182-
async (agpsdata) => {
183-
const payload = Buffer.from(agpsdata, 'hex')
182+
async (agnssdata) => {
183+
const payload = Buffer.from(agnssdata, 'hex')
184184
log(context)(`Sending ${payload.length} bytes to ${deviceId}`)
185185
const m = new iothubCommon.Message(payload)
186-
m.properties.add('agps', 'result')
186+
m.properties.add('agnss', 'result')
187187
return iotHubClient.send(deviceId, m)
188188
},
189189
),
@@ -222,7 +222,7 @@ const agpsQueuedDeviceRequestsHandler: AzureFunction = async (
222222
const visibilityTimeout = Math.floor(
223223
Math.min(900, (delayInSeconds ?? initialDelay) * delayFactor),
224224
)
225-
await agpsRequestsQueueClient.sendMessage(
225+
await agnssRequestsQueueClient.sendMessage(
226226
Buffer.from(
227227
JSON.stringify({
228228
deviceId,
@@ -240,4 +240,4 @@ const agpsQueuedDeviceRequestsHandler: AzureFunction = async (
240240
log(context)(requestCacheKey, `re-scheduled request for`, deviceId)
241241
}
242242

243-
export default agpsQueuedDeviceRequestsHandler
243+
export default agnssQueuedDeviceRequestsHandler

agpsQueuedDeviceRequestsHandler/function.json renamed to agnssQueuedDeviceRequestsHandler/function.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"type": "queueTrigger",
55
"direction": "in",
66
"name": "request",
7-
"queueName": "%AGPS_REQUESTS_QUEUE_NAME%"
7+
"queueName": "%AGNSS_REQUESTS_QUEUE_NAME%"
88
}
99
],
1010
"scriptFile": "./handler.mjs"
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import handler from "../dist/agnssQueuedDeviceRequestsHandler/agnssQueuedDeviceRequestsHandler.js";
2+
export default handler;

0 commit comments

Comments
 (0)