Compare commits

..

3 commits

Author SHA1 Message Date
saji 9ec01c39de fix skylab json formatting
All checks were successful
Go / build (1.22) (push) Successful in 1m16s
Go / build (1.21) (push) Successful in 1m18s
2024-03-04 20:41:15 -06:00
saji bcd61321e6 add CORS to api 2024-03-04 20:40:55 -06:00
saji a015911e0e split openmct dev/prod 2024-03-04 20:40:32 -06:00
12 changed files with 96 additions and 53 deletions

View file

@ -80,6 +80,7 @@ func TelemRouter(log *slog.Logger, broker *Broker, db *TelemDb) http.Handler {
r.Use(middleware.RealIP) r.Use(middleware.RealIP)
r.Use(middleware.Logger) // TODO: integrate with slog instead of go default logger. r.Use(middleware.Logger) // TODO: integrate with slog instead of go default logger.
r.Use(middleware.Recoverer) r.Use(middleware.Recoverer)
r.Use(middleware.SetHeader("Access-Control-Allow-Origin", "*"))
// heartbeat request. // heartbeat request.
r.Get("/ping", func(w http.ResponseWriter, r *http.Request) { r.Get("/ping", func(w http.ResponseWriter, r *http.Request) {

View file

@ -18,37 +18,37 @@ import (
// SkylabFile is a yaml file from skylab. // SkylabFile is a yaml file from skylab.
type SkylabFile struct { type SkylabFile struct {
Packets []PacketDef `yaml:"packets"` Packets []PacketDef `yaml:"packets,omitempty" json:"packets,omitempty"`
Boards []BoardDef `yaml:"boards"` Boards []BoardDef `yaml:"boards,omitempty" json:"boards,omitempty"`
} }
type BoardDef struct { type BoardDef struct {
Name string `yaml:"name"` Name string `yaml:"name,omitempty" json:"name,omitempty"`
Transmit []string `yaml:"transmit"` Transmit []string `yaml:"transmit,omitempty" json:"transmit,omitempty"`
Receive []string `yaml:"receive"` Receive []string `yaml:"receive,omitempty" json:"receive,omitempty"`
} }
// data field. // data field.
type FieldDef struct { type FieldDef struct {
Name string `yaml:"name"` Name string `yaml:"name,omitempty" json:"name,omitempty"`
Type string `yaml:"type"` Type string `yaml:"type,omitempty" json:"type,omitempty"`
Units string `yaml:"units"` Units string `yaml:"units,omitempty" json:"units,omitempty"`
Conversion float32 `yaml:"conversion"` Conversion float32 `yaml:"conversion,omitempty" json:"conversion,omitempty"`
Bits []struct { Bits []struct {
Name string `yaml:"name"` Name string `yaml:"name,omitempty" json:"name,omitempty"`
} `yaml:"bits"` } `yaml:"bits,omitempty" json:"bits,omitempty"`
} }
// a PacketDef is a full can packet. // a PacketDef is a full can packet.
type PacketDef struct { type PacketDef struct {
Name string `yaml:"name"` Name string `yaml:"name,omitempty" json:"name,omitempty"`
Description string `yaml:"description"` Description string `yaml:"description,omitempty" json:"description,omitempty"`
Id uint32 `yaml:"id"` Id uint32 `yaml:"id,omitempty" json:"id,omitempty"`
Endian string `yaml:"endian"` Endian string `yaml:"endian,omitempty" json:"endian,omitempty"`
Extended bool `yaml:"is_extended"` IsExtended bool `yaml:"is_extended,omitempty" json:"is_extended,omitempty"`
Repeat int `yaml:"repeat"` Repeat int `yaml:"repeat,omitempty" json:"repeat,omitempty"`
Offset int `yaml:"offset"` Offset int `yaml:"offset,omitempty" json:"offset,omitempty"`
Data []FieldDef `yaml:"data"` Data []FieldDef `yaml:"data,omitempty" json:"data,omitempty"`
} }
// we need to generate bitfield types. // we need to generate bitfield types.
@ -278,13 +278,13 @@ func idToString(p PacketDef) string {
if p.Repeat > 0 { if p.Repeat > 0 {
resp := make([]string, p.Repeat) resp := make([]string, p.Repeat)
for idx := 0; idx < p.Repeat; idx++ { for idx := 0; idx < p.Repeat; idx++ {
resp[idx] = fmt.Sprintf("can.CanID{ Id: 0x%X, Extended: %t }", int(p.Id)+idx*p.Offset, p.Extended) resp[idx] = fmt.Sprintf("can.CanID{ Id: 0x%X, Extended: %t }", int(p.Id)+idx*p.Offset, p.IsExtended)
} }
return strings.Join(resp, ",") return strings.Join(resp, ",")
} else { } else {
return fmt.Sprintf("can.CanID{ Id: 0x%X, Extended: %t }", p.Id, p.Extended) return fmt.Sprintf("can.CanID{ Id: 0x%X, Extended: %t }", p.Id, p.IsExtended)
} }
} }

File diff suppressed because one or more lines are too long

View file

@ -46,7 +46,7 @@ type {{$structName}} struct {
} }
func (p *{{$structName}}) CanId() (can.CanID, error) { func (p *{{$structName}}) CanId() (can.CanID, error) {
c := can.CanID{Extended: {{.Extended}}} c := can.CanID{Extended: {{.IsExtended}}}
{{- if .Repeat }} {{- if .Repeat }}
if p.Idx >= {{.Repeat}} { if p.Idx >= {{.Repeat}} {
return c, &UnknownIdError{ {{ printf "0x%X" .Id }} } return c, &UnknownIdError{ {{ printf "0x%X" .Id }} }
@ -108,10 +108,10 @@ var idMap = map[can.CanID]bool{
{{ range $p := .Packets -}} {{ range $p := .Packets -}}
{{ if $p.Repeat }} {{ if $p.Repeat }}
{{ range $idx := Nx (int $p.Id) $p.Repeat $p.Offset -}} {{ range $idx := Nx (int $p.Id) $p.Repeat $p.Offset -}}
{ Id: {{ $idx | printf "0x%X"}}, Extended: {{$p.Extended}} }: true, { Id: {{ $idx | printf "0x%X"}}, Extended: {{$p.IsExtended}} }: true,
{{ end }} {{ end }}
{{- else }} {{- else }}
{ Id: {{ $p.Id | printf "0x%X" }}, Extended: {{$p.Extended}} }: true, { Id: {{ $p.Id | printf "0x%X" }}, Extended: {{$p.IsExtended}} }: true,
{{- end}} {{- end}}
{{- end}} {{- end}}
} }

17
web/jsconfig.json Normal file
View file

@ -0,0 +1,17 @@
{
"compilerOptions": {
// "baseUrl": "./src",
"target": "es6",
"checkJs": true,
"allowJs": true,
"moduleResolution": "nodenext",
"allowSyntheticDefaultImports": true,
"paths": {
"openmct": ["./node_modules/openmct/dist/openmct.d.ts"]
}
},
"exclude": [
"./dist/**/*",
"webpack.*.js"
]
}

3
web/package-lock.json generated
View file

@ -23,7 +23,8 @@
"typescript": "^4.9.5", "typescript": "^4.9.5",
"webpack": "^5.75.0", "webpack": "^5.75.0",
"webpack-cli": "^5.0.1", "webpack-cli": "^5.0.1",
"webpack-dev-server": "^4.11.1" "webpack-dev-server": "^4.11.1",
"webpack-merge": "^5.10.0"
} }
}, },
"node_modules/@aashutoshrathi/word-wrap": { "node_modules/@aashutoshrathi/word-wrap": {

View file

@ -5,8 +5,8 @@
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack", "build": "webpack --config webpack.prod.js",
"serve": "webpack serve" "serve": "webpack serve --config webpack.dev.js"
}, },
"author": "", "author": "",
"license": "ISC", "license": "ISC",
@ -25,6 +25,7 @@
"typescript": "^4.9.5", "typescript": "^4.9.5",
"webpack": "^5.75.0", "webpack": "^5.75.0",
"webpack-cli": "^5.0.1", "webpack-cli": "^5.0.1",
"webpack-dev-server": "^4.11.1" "webpack-dev-server": "^4.11.1",
"webpack-merge": "^5.10.0"
} }
} }

View file

@ -7,6 +7,13 @@ openmct.install(openmct.plugins.UTCTimeSystem());
openmct.time.clock('local', {start: -5 * 60 * 1000, end: 0}); openmct.time.clock('local', {start: -5 * 60 * 1000, end: 0});
openmct.time.timeSystem('utc'); openmct.time.timeSystem('utc');
openmct.install(openmct.plugins.Espresso()); openmct.install(openmct.plugins.Espresso());
openmct.install(PhoebusPlugin());
if (process.env.BASE_URL) {
console.log("got a thing")
console.log(process.env.BASE_URL)
}
function GotelemPlugin() {
}
openmct.start(); openmct.start();

View file

@ -1,11 +0,0 @@
{
"compilerOptions": {
"baseUrl": "./src",
"target": "es6",
"checkJs": true,
"moduleResolution": "node",
"paths": {
"openmct": ["node_modules/openmct/dist/openmct.d.ts"]
}
}
}

View file

@ -5,7 +5,6 @@ const Dotenv = require('dotenv-webpack');
module.exports = { module.exports = {
entry: './src/app.js', entry: './src/app.js',
mode: "development",
module: { module: {
rules: [ rules: [
{ {
@ -33,13 +32,6 @@ module.exports = {
externals: { externals: {
openmct: "openmct", openmct: "openmct",
}, },
devServer: {
static: [{
// eslint-disable-next-line no-undef
directory: path.join(__dirname, '/node_modules/openmct/dist'),
publicPath: '/node_modules/openmct/dist'
}]
},
output: { output: {
filename: 'main.js', filename: 'main.js',
path: path.resolve(__dirname, 'dist'), path: path.resolve(__dirname, 'dist'),

22
web/webpack.dev.js Normal file
View file

@ -0,0 +1,22 @@
const { merge } = require('webpack-merge');
const common = require('./webpack.common.js');
const webpack = require('webpack');
module.exports = merge(common, {
mode: "development",
devtool: 'inline-source-map',
plugins: [
new webpack.EnvironmentPlugin({
NODE_ENV: "development",
BASE_URL: "http://localhost:8080"
}),
],
devServer: {
static: "./dist",
headers: {
"Access-Control-Allow-Origin": "*",
'Access-Control-Allow-Headers': '*',
'Access-Control-Allow-Methods': '*',
},
},
})

13
web/webpack.prod.js Normal file
View file

@ -0,0 +1,13 @@
const { merge } = require('webpack-merge');
const common = require('./webpack.common.js');
module.exports = merge(common, {
mode: "production",
plugins: [
new webpack.EnvironmentPlugin({
NODE_ENV: "production",
BASE_URL: "",
});
],
devtool: 'source-map',
})