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.Logger) // TODO: integrate with slog instead of go default logger.
r.Use(middleware.Recoverer)
r.Use(middleware.SetHeader("Access-Control-Allow-Origin", "*"))
// heartbeat 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.
type SkylabFile struct {
Packets []PacketDef `yaml:"packets"`
Boards []BoardDef `yaml:"boards"`
Packets []PacketDef `yaml:"packets,omitempty" json:"packets,omitempty"`
Boards []BoardDef `yaml:"boards,omitempty" json:"boards,omitempty"`
}
type BoardDef struct {
Name string `yaml:"name"`
Transmit []string `yaml:"transmit"`
Receive []string `yaml:"receive"`
Name string `yaml:"name,omitempty" json:"name,omitempty"`
Transmit []string `yaml:"transmit,omitempty" json:"transmit,omitempty"`
Receive []string `yaml:"receive,omitempty" json:"receive,omitempty"`
}
// data field.
type FieldDef struct {
Name string `yaml:"name"`
Type string `yaml:"type"`
Units string `yaml:"units"`
Conversion float32 `yaml:"conversion"`
Name string `yaml:"name,omitempty" json:"name,omitempty"`
Type string `yaml:"type,omitempty" json:"type,omitempty"`
Units string `yaml:"units,omitempty" json:"units,omitempty"`
Conversion float32 `yaml:"conversion,omitempty" json:"conversion,omitempty"`
Bits []struct {
Name string `yaml:"name"`
} `yaml:"bits"`
Name string `yaml:"name,omitempty" json:"name,omitempty"`
} `yaml:"bits,omitempty" json:"bits,omitempty"`
}
// a PacketDef is a full can packet.
type PacketDef struct {
Name string `yaml:"name"`
Description string `yaml:"description"`
Id uint32 `yaml:"id"`
Endian string `yaml:"endian"`
Extended bool `yaml:"is_extended"`
Repeat int `yaml:"repeat"`
Offset int `yaml:"offset"`
Data []FieldDef `yaml:"data"`
Name string `yaml:"name,omitempty" json:"name,omitempty"`
Description string `yaml:"description,omitempty" json:"description,omitempty"`
Id uint32 `yaml:"id,omitempty" json:"id,omitempty"`
Endian string `yaml:"endian,omitempty" json:"endian,omitempty"`
IsExtended bool `yaml:"is_extended,omitempty" json:"is_extended,omitempty"`
Repeat int `yaml:"repeat,omitempty" json:"repeat,omitempty"`
Offset int `yaml:"offset,omitempty" json:"offset,omitempty"`
Data []FieldDef `yaml:"data,omitempty" json:"data,omitempty"`
}
// we need to generate bitfield types.
@ -278,13 +278,13 @@ func idToString(p PacketDef) string {
if p.Repeat > 0 {
resp := make([]string, p.Repeat)
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, ",")
} 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) {
c := can.CanID{Extended: {{.Extended}}}
c := can.CanID{Extended: {{.IsExtended}}}
{{- if .Repeat }}
if p.Idx >= {{.Repeat}} {
return c, &UnknownIdError{ {{ printf "0x%X" .Id }} }
@ -108,10 +108,10 @@ var idMap = map[can.CanID]bool{
{{ range $p := .Packets -}}
{{ if $p.Repeat }}
{{ 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 }}
{{- else }}
{ Id: {{ $p.Id | printf "0x%X" }}, Extended: {{$p.Extended}} }: true,
{ Id: {{ $p.Id | printf "0x%X" }}, Extended: {{$p.IsExtended}} }: true,
{{- 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",
"webpack": "^5.75.0",
"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": {

View file

@ -5,8 +5,8 @@
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"serve": "webpack serve"
"build": "webpack --config webpack.prod.js",
"serve": "webpack serve --config webpack.dev.js"
},
"author": "",
"license": "ISC",
@ -25,6 +25,7 @@
"typescript": "^4.9.5",
"webpack": "^5.75.0",
"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.timeSystem('utc');
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();

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 = {
entry: './src/app.js',
mode: "development",
module: {
rules: [
{
@ -33,13 +32,6 @@ module.exports = {
externals: {
openmct: "openmct",
},
devServer: {
static: [{
// eslint-disable-next-line no-undef
directory: path.join(__dirname, '/node_modules/openmct/dist'),
publicPath: '/node_modules/openmct/dist'
}]
},
output: {
filename: 'main.js',
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',
})