kopia lustrzana https://github.com/OpenRTX/OpenRTX
tests: platform: cleanup deprecated tesuites
rodzic
fe87ac0186
commit
7b1ff71907
|
@ -1,80 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2020 - 2025 by Federico Amedeo Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Frederik Saraci IU2NRO *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <os.h>
|
|
||||||
#include <interfaces/gpio.h>
|
|
||||||
#include <interfaces/delays.h>
|
|
||||||
#include <interfaces/rtx.h>
|
|
||||||
#include <interfaces/platform.h>
|
|
||||||
#include "hwconfig.h"
|
|
||||||
#include "toneGenerator_MDx.h"
|
|
||||||
|
|
||||||
OS_MUTEX mutex;
|
|
||||||
OS_ERR err;
|
|
||||||
|
|
||||||
static const freq_t rptFreq = 430100000;
|
|
||||||
static const freq_t rptShift = 1600000;
|
|
||||||
static const tone_t ctcss = 719;
|
|
||||||
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
platform_init();
|
|
||||||
toneGen_init();
|
|
||||||
|
|
||||||
OSMutexCreate(&mutex, "", &err);
|
|
||||||
|
|
||||||
rtx_init(&mutex);
|
|
||||||
|
|
||||||
|
|
||||||
rtxStatus_t cfg;
|
|
||||||
|
|
||||||
/* Take mutex and update the RTX configuration */
|
|
||||||
OSMutexPend(&mutex, 0, OS_OPT_PEND_BLOCKING, NULL, &err);
|
|
||||||
|
|
||||||
cfg.opMode = OPMODE_FM;
|
|
||||||
cfg.bandwidth = BW_25;
|
|
||||||
cfg.rxFrequency = rptFreq;
|
|
||||||
cfg.txFrequency = rptFreq + rptShift;
|
|
||||||
cfg.txPower = 1.0f;
|
|
||||||
cfg.sqlLevel = 3;
|
|
||||||
cfg.rxTone = 0;
|
|
||||||
cfg.txTone = ctcss;
|
|
||||||
|
|
||||||
OSMutexPost(&mutex, OS_OPT_POST_NONE, &err);
|
|
||||||
|
|
||||||
/* After mutex has been released, post the new configuration */
|
|
||||||
rtx_configure(&cfg);
|
|
||||||
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
rtx_taskFunc();
|
|
||||||
|
|
||||||
/* You can also resync the cfg */
|
|
||||||
cfg = rtx_getCurrentStatus();
|
|
||||||
|
|
||||||
OSTimeDlyHMSM(0u, 0u, 0u, 10u, OS_OPT_TIME_HMSM_STRICT, &err);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,94 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2021 - 2025 by Federico Amedeo Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Frederik Saraci IU2NRO *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include <interfaces/graphics.h>
|
|
||||||
#include <interfaces/platform.h>
|
|
||||||
#include <interfaces/keyboard.h>
|
|
||||||
#include <hwconfig.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <os.h>
|
|
||||||
|
|
||||||
uint64_t benchmark(uint32_t n);
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
platform_init();
|
|
||||||
platform_setBacklightLevel(255);
|
|
||||||
|
|
||||||
gfx_init();
|
|
||||||
kbd_init();
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Setup timer for time measurement: input clock is twice the APB2 clock, so
|
|
||||||
* is 168MHz. Setting the prescaler to 33 we get a tick frequency of
|
|
||||||
* 5,09090909091 MHz, that is a resolution of 0.196 us per tick.
|
|
||||||
* Considering that the timer has a 16-bit counter, we have rollover in
|
|
||||||
* 12.87 ms.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static const uint32_t clkDivider = 33;
|
|
||||||
|
|
||||||
RCC->APB2ENR |= RCC_APB2ENR_TIM9EN;
|
|
||||||
|
|
||||||
TIM9->PSC = clkDivider - 1;
|
|
||||||
TIM9->ARR = 0xFFFF;
|
|
||||||
TIM9->CR1 = TIM_CR1_CEN;
|
|
||||||
|
|
||||||
uint32_t numIterations = 128;
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
getchar();
|
|
||||||
|
|
||||||
uint64_t tot_ticks = benchmark(numIterations);
|
|
||||||
|
|
||||||
float totalTime_s = ((float)(tot_ticks * clkDivider))/168000000.0f;
|
|
||||||
printf("Average values over %ld iterations:\r\n", numIterations);
|
|
||||||
printf("- %lld ticks\r\n- %f ms\r\n", tot_ticks, totalTime_s*1000.0f);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64_t benchmark(uint32_t n)
|
|
||||||
{
|
|
||||||
uint64_t totalTime = 0;
|
|
||||||
uint32_t dummy = 0;
|
|
||||||
|
|
||||||
for(uint32_t i = 0; i < n; i++)
|
|
||||||
{
|
|
||||||
gfx_clearScreen();
|
|
||||||
point_t origin = {0, i % 128};
|
|
||||||
color_t color_red = {255, 0, 0, 255};
|
|
||||||
color_t color_white = {255, 255, 255, 255};
|
|
||||||
gfx_drawRect(origin, 160, 20, color_red, 1);
|
|
||||||
gfx_print(origin, buffer, FONT_SIZE_24PT, TEXT_ALIGN_LEFT,
|
|
||||||
color_white, "KEK");
|
|
||||||
|
|
||||||
dummy += kbd_getKeys();
|
|
||||||
|
|
||||||
/* Measure the time taken by gfx_render() */
|
|
||||||
TIM9->CNT = 0;
|
|
||||||
gfx_render();
|
|
||||||
totalTime += TIM9->CNT;
|
|
||||||
}
|
|
||||||
|
|
||||||
return totalTime/n;
|
|
||||||
}
|
|
|
@ -1,42 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2020 - 2025 by Federico Amedeo Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Frederik Saraci IU2NRO *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <interfaces/platform.h>
|
|
||||||
#include <interfaces/delays.h>
|
|
||||||
#include <interfaces/gpio.h>
|
|
||||||
#include <hwconfig.h>
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
platform_init();
|
|
||||||
|
|
||||||
gpio_setMode(CH_SELECTOR_0, INPUT_PULL_UP);
|
|
||||||
gpio_setMode(CH_SELECTOR_1, INPUT_PULL_UP);
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
iprintf("%d %d\r\n", gpio_readPin(CH_SELECTOR_0),
|
|
||||||
gpio_readPin(CH_SELECTOR_1));
|
|
||||||
delayMs(1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,86 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2020 - 2025 by Federico Amedeo Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Frederik Saraci IU2NRO *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <interfaces/nvmem.h>
|
|
||||||
#include <cps.h>
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
nvm_init();
|
|
||||||
|
|
||||||
getchar();
|
|
||||||
printf("Codeplug Demo!\r\n\r\n");
|
|
||||||
printf("Channels:\r\n");
|
|
||||||
for(int pos=0,result=0; result != -1; pos++)
|
|
||||||
{
|
|
||||||
channel_t ch;
|
|
||||||
result = cps_readChannel(&ch, pos);
|
|
||||||
if(result != -1)
|
|
||||||
{
|
|
||||||
printf("Channel n.%d:\r\n", pos+1);
|
|
||||||
printf(" %s\r\n TX: %ld\r\n RX: %ld\r\n Mode: %s\r\n Bandwidth: %s\r\n",
|
|
||||||
ch.name,
|
|
||||||
ch.tx_frequency,
|
|
||||||
ch.rx_frequency,
|
|
||||||
(ch.mode == 1) ? "DMR" : "FM",
|
|
||||||
(ch.bandwidth == BW_12_5) ? "12.5kHz" : ((ch.bandwidth == BW_20)
|
|
||||||
? "20kHz" : "25kHz"));
|
|
||||||
}
|
|
||||||
puts("\r");
|
|
||||||
}
|
|
||||||
printf("Zones:\r\n");
|
|
||||||
for(int pos=0,result=0; result != -1; pos++)
|
|
||||||
{
|
|
||||||
zone_t bank;
|
|
||||||
result = cps_readZoneData(&bank, pos);
|
|
||||||
if(result != -1)
|
|
||||||
{
|
|
||||||
printf("Zone n.%d:\r\n", pos+1);
|
|
||||||
printf(" %s\r\n", bank.name);
|
|
||||||
for(int x=0; x < 64; x++)
|
|
||||||
{
|
|
||||||
if(bank.member[x] != 0)
|
|
||||||
{
|
|
||||||
printf(" - Index: %d, Channel %d\r\n", x, bank.member[x]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
puts("\r");
|
|
||||||
}
|
|
||||||
printf("Contacts:\r\n");
|
|
||||||
for(int pos=0,result=0; result != -1; pos++)
|
|
||||||
{
|
|
||||||
contact_t contact;
|
|
||||||
result = cps_readContact(&contact, pos);
|
|
||||||
if(result != -1)
|
|
||||||
{
|
|
||||||
printf("Contact n.%d:\r\n", pos+1);
|
|
||||||
printf(" %s\r\n", contact.name);
|
|
||||||
printf(" - DMR ID:%lu\r\n", contact.id);
|
|
||||||
printf(" - Type:%d\r\n", contact.type);
|
|
||||||
printf(" - Receive Tone:%s\r\n", contact.receive_tone ? "True" : "False");
|
|
||||||
}
|
|
||||||
puts("\r");
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,80 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2020 - 2025 by Federico Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Testing module for SDL-based display driver, serves both to check that
|
|
||||||
* everything is fine and as a simple example on how to use both the driver and
|
|
||||||
* the SDL platform.
|
|
||||||
*
|
|
||||||
* To adjust screen dimensions you have to adjust the corresponding constants in
|
|
||||||
* the driver source file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <interfaces/display.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <SDL2/SDL.h>
|
|
||||||
#undef main //necessary to avoid conflicts with SDL_main
|
|
||||||
|
|
||||||
|
|
||||||
void drawRect(int x, int y, int width, int height, uint16_t color)
|
|
||||||
{
|
|
||||||
int x_max = x + width;
|
|
||||||
int y_max = y + height;
|
|
||||||
uint16_t *buf = (uint16_t *)(display_getFrameBuffer());
|
|
||||||
|
|
||||||
for(int i=y; i < y_max; i++)
|
|
||||||
{
|
|
||||||
for(int j=x; j < x_max; j++)
|
|
||||||
{
|
|
||||||
buf[j + i * SCREEN_WIDTH] = color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
display_init();
|
|
||||||
|
|
||||||
/* Horizontal red line */
|
|
||||||
drawRect(0, 10, SCREEN_WIDTH, 20, 0xF800);
|
|
||||||
|
|
||||||
/* Vertical blue line */
|
|
||||||
drawRect(10, 0, 20, SCREEN_HEIGHT, 0x001F);
|
|
||||||
|
|
||||||
/* Vertical green line */
|
|
||||||
drawRect(80, 0, 20, SCREEN_HEIGHT, 0x07e0);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Use SDL event listener to check if window close button has been pressed,
|
|
||||||
* in this case quit.
|
|
||||||
*/
|
|
||||||
SDL_Event eventListener;
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
display_render();
|
|
||||||
SDL_PollEvent(&eventListener);
|
|
||||||
if(eventListener.type == SDL_QUIT) break;
|
|
||||||
}
|
|
||||||
|
|
||||||
display_terminate();
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,63 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2020 - 2025 by Federico Amedeo Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Frederik Saraci IU2NRO *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <AT24Cx.h>
|
|
||||||
|
|
||||||
void printChunk(void *chunk)
|
|
||||||
{
|
|
||||||
uint8_t *ptr = ((uint8_t *) chunk);
|
|
||||||
for(size_t i = 0; i < 16; i++) printf("%02x ", ptr[i]);
|
|
||||||
for(size_t i = 0; i < 16; i++)
|
|
||||||
{
|
|
||||||
if((ptr[i] > 0x22) && (ptr[i] < 0x7f))
|
|
||||||
{
|
|
||||||
printf("%c", ptr[i]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
printf(".");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
|
|
||||||
AT24Cx_init();
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
getchar();
|
|
||||||
|
|
||||||
for(uint16_t addr = 0; addr < 0x10000; addr += 16)
|
|
||||||
{
|
|
||||||
uint8_t buf[16];
|
|
||||||
AT24Cx_readData(addr, buf, 16);
|
|
||||||
printf("\r\n%lx: ", addr);
|
|
||||||
printChunk(buf);
|
|
||||||
puts("\r");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,53 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2020 - 2025 by Federico Amedeo Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Frederik Saraci IU2NRO *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include "W25Qx.h"
|
|
||||||
#include <interfaces/delays.h>
|
|
||||||
|
|
||||||
void printChunk(void *chunk)
|
|
||||||
{
|
|
||||||
uint8_t *ptr = ((uint8_t *) chunk);
|
|
||||||
for(size_t i = 0; i < 16; i++) printf("%02x ", ptr[i]);
|
|
||||||
for(size_t i = 0; i < 16; i++)
|
|
||||||
{
|
|
||||||
if((ptr[i] > 0x22) && (ptr[i] < 0x7f)) printf("%c", ptr[i]);
|
|
||||||
else printf(".");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
delayMs(5000);
|
|
||||||
W25Qx_init();
|
|
||||||
W25Qx_wakeup();
|
|
||||||
|
|
||||||
for(uint32_t addr = 0; addr < 0xFFFFFF; addr += 16)
|
|
||||||
{
|
|
||||||
uint8_t buf[16];
|
|
||||||
(void) W25Qx_readData(addr, buf, 16);
|
|
||||||
printf("\r\n%08lx: ", addr);
|
|
||||||
printChunk(buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,70 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2020 - 2025 by Federico Amedeo Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Frederik Saraci IU2NRO *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <W25Qx.h>
|
|
||||||
|
|
||||||
void printChunk(void *chunk)
|
|
||||||
{
|
|
||||||
uint8_t *ptr = ((uint8_t *) chunk);
|
|
||||||
for(size_t i = 0; i < 16; i++) printf("%02x ", ptr[i]);
|
|
||||||
for(size_t i = 0; i < 16; i++)
|
|
||||||
{
|
|
||||||
if((ptr[i] > 0x22) && (ptr[i] < 0x7f)) printf("%c", ptr[i]);
|
|
||||||
else printf(".");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void printSecurityRegister(uint32_t reg)
|
|
||||||
{
|
|
||||||
uint8_t secRegister[256] = {0};
|
|
||||||
W25Qx_wakeup();
|
|
||||||
W25Qx_readSecurityRegister(reg, secRegister, 256);
|
|
||||||
W25Qx_sleep();
|
|
||||||
|
|
||||||
for(uint32_t addr = 0; addr < 256; addr += 16)
|
|
||||||
{
|
|
||||||
printf("\r\n%02lx: ", addr);
|
|
||||||
printChunk(&(secRegister[addr]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
W25Qx_init();
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
getchar();
|
|
||||||
|
|
||||||
printf("0x1000:");
|
|
||||||
printSecurityRegister(0x1000);
|
|
||||||
|
|
||||||
printf("\r\n\r\n0x2000:");
|
|
||||||
printSecurityRegister(0x2000);
|
|
||||||
|
|
||||||
printf("\r\n\r\n0x3000:");
|
|
||||||
printSecurityRegister(0x3000);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,123 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2021 - 2025 by Federico Amedeo Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Frederik Saraci IU2NRO *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include <interfaces/platform.h>
|
|
||||||
#include <interfaces/delays.h>
|
|
||||||
#include <interfaces/gpio.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <hwconfig.h>
|
|
||||||
#include <minmea.h>
|
|
||||||
#include <interfaces/gps.h>
|
|
||||||
|
|
||||||
char line[MINMEA_MAX_LENGTH*10];
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
platform_init();
|
|
||||||
|
|
||||||
printf("Checking for GPS... ");
|
|
||||||
bool hasGps = gps_detect(5000);
|
|
||||||
printf(" %s.\r\n", hasGps ? "OK" : "TIMEOUT");
|
|
||||||
|
|
||||||
gps_init(9600);
|
|
||||||
gps_enable();
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
int len = gps_getNmeaSentence(line, MINMEA_MAX_LENGTH*10);
|
|
||||||
if(len != -1)
|
|
||||||
{
|
|
||||||
printf("Got sentence with length %d:\r\n", len);
|
|
||||||
printf("%s\r\n", line);
|
|
||||||
switch (minmea_sentence_id(line, false)) {
|
|
||||||
case MINMEA_SENTENCE_RMC:
|
|
||||||
{
|
|
||||||
struct minmea_sentence_rmc frame;
|
|
||||||
if (minmea_parse_rmc(&frame, line)) {
|
|
||||||
printf("$RMC: raw coordinates and speed: (%d/%d,%d/%d) %d/%d\n\r",
|
|
||||||
frame.latitude.value, frame.latitude.scale,
|
|
||||||
frame.longitude.value, frame.longitude.scale,
|
|
||||||
frame.speed.value, frame.speed.scale);
|
|
||||||
printf("$RMC fixed-point coordinates and speed scaled to three decimal places: (%d,%d) %d\n\r",
|
|
||||||
minmea_rescale(&frame.latitude, 1000),
|
|
||||||
minmea_rescale(&frame.longitude, 1000),
|
|
||||||
minmea_rescale(&frame.speed, 1000));
|
|
||||||
printf("$RMC floating point degree coordinates and speed: (%f,%f) %f\n\r",
|
|
||||||
minmea_tocoord(&frame.latitude),
|
|
||||||
minmea_tocoord(&frame.longitude),
|
|
||||||
minmea_tofloat(&frame.speed));
|
|
||||||
}
|
|
||||||
} break;
|
|
||||||
|
|
||||||
case MINMEA_SENTENCE_GGA:
|
|
||||||
{
|
|
||||||
struct minmea_sentence_gga frame;
|
|
||||||
if (minmea_parse_gga(&frame, line)) {
|
|
||||||
printf("$GGA: fix quality: %d\n\r", frame.fix_quality);
|
|
||||||
}
|
|
||||||
} break;
|
|
||||||
|
|
||||||
case MINMEA_SENTENCE_GSV:
|
|
||||||
{
|
|
||||||
struct minmea_sentence_gsv frame;
|
|
||||||
if (minmea_parse_gsv(&frame, line)) {
|
|
||||||
printf("$GSV: message %d of %d\n\r", frame.msg_nr, frame.total_msgs);
|
|
||||||
printf("$GSV: satellites in view: %d\n\r", frame.total_sats);
|
|
||||||
for (int i = 0; i < 4; i++)
|
|
||||||
printf("$GSV: sat nr %d, elevation: %d, azimuth: %d, snr: %d dbm\n\r",
|
|
||||||
frame.sats[i].nr,
|
|
||||||
frame.sats[i].elevation,
|
|
||||||
frame.sats[i].azimuth,
|
|
||||||
frame.sats[i].snr);
|
|
||||||
}
|
|
||||||
} break;
|
|
||||||
|
|
||||||
case MINMEA_SENTENCE_VTG:
|
|
||||||
{
|
|
||||||
|
|
||||||
} break;
|
|
||||||
|
|
||||||
// Ignore this message as we take data from RMC
|
|
||||||
case MINMEA_SENTENCE_GLL:
|
|
||||||
;
|
|
||||||
break;
|
|
||||||
|
|
||||||
// These messages are never sent by the Jumpstar JS-M710 Module
|
|
||||||
case MINMEA_SENTENCE_GSA: break;
|
|
||||||
case MINMEA_SENTENCE_GST: break;
|
|
||||||
case MINMEA_SENTENCE_ZDA: break;
|
|
||||||
|
|
||||||
// Error handling
|
|
||||||
case MINMEA_INVALID:
|
|
||||||
{
|
|
||||||
printf("Error: Invalid NMEA sentence!\n\r");
|
|
||||||
} break;
|
|
||||||
|
|
||||||
case MINMEA_UNKNOWN:
|
|
||||||
{
|
|
||||||
printf("Error: Unsupported NMEA sentence!\n\r");
|
|
||||||
} break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,72 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2020 - 2025 by Federico Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <os.h>
|
|
||||||
#include <interfaces/gpio.h>
|
|
||||||
#include <interfaces/graphics.h>
|
|
||||||
#include "hwconfig.h"
|
|
||||||
#include <interfaces/platform.h>
|
|
||||||
#include "state.h"
|
|
||||||
#include <interfaces/keyboard.h>
|
|
||||||
#include "ui.h"
|
|
||||||
|
|
||||||
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
OS_ERR os_err;
|
|
||||||
|
|
||||||
// Initialize the radio state
|
|
||||||
state_init();
|
|
||||||
|
|
||||||
// Init the graphic stack
|
|
||||||
gfx_init();
|
|
||||||
platform_setBacklightLevel(255);
|
|
||||||
|
|
||||||
// Print splash screen
|
|
||||||
point_t splash_origin = {0, SCREEN_HEIGHT / 2};
|
|
||||||
color_t color_yellow_fab413 = {250, 180, 19};
|
|
||||||
gfx_clearScreen();
|
|
||||||
gfx_print(splash_origin, FONT_SIZE_4, TEXT_ALIGN_CENTER,
|
|
||||||
color_yellow_fab413, "OpenRTX");
|
|
||||||
gfx_render();
|
|
||||||
while(gfx_renderingInProgress());
|
|
||||||
OSTimeDlyHMSM(0u, 0u, 1u, 0u, OS_OPT_TIME_HMSM_STRICT, &os_err);
|
|
||||||
|
|
||||||
// Clear screen
|
|
||||||
gfx_clearScreen();
|
|
||||||
gfx_render();
|
|
||||||
while(gfx_renderingInProgress());
|
|
||||||
|
|
||||||
// UI update infinite loop
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
state_t state = state_update();
|
|
||||||
keyboard_t keys = kbd_getKeys();
|
|
||||||
bool renderNeeded = ui_update(state, keys);
|
|
||||||
if(renderNeeded)
|
|
||||||
{
|
|
||||||
gfx_render();
|
|
||||||
while(gfx_renderingInProgress());
|
|
||||||
}
|
|
||||||
OSTimeDlyHMSM(0u, 0u, 0u, 100u, OS_OPT_TIME_HMSM_STRICT, &os_err);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2020 - 2025 by Federico Amedeo Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Frederik Saraci IU2NRO *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include <os.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <interfaces/platform.h>
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
platform_init();
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
OS_ERR err;
|
|
||||||
printf("Hello world\n");
|
|
||||||
OSTimeDlyHMSM(0u, 0u, 1u, 0u, OS_OPT_TIME_HMSM_STRICT, &err);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,114 +0,0 @@
|
||||||
|
|
||||||
#include <app_cfg.h>
|
|
||||||
#include <os.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <lib_mem.h>
|
|
||||||
#include <lib_math.h>
|
|
||||||
#include <SDL2/SDL.h>
|
|
||||||
#undef main
|
|
||||||
|
|
||||||
#include <interfaces/graphics.h>
|
|
||||||
|
|
||||||
static OS_TCB App_TaskStartTCB;
|
|
||||||
static CPU_STK_SIZE App_TaskStartStk[APP_CFG_TASK_START_STK_SIZE];
|
|
||||||
static void App_TaskStart(void *p_arg);
|
|
||||||
|
|
||||||
static OS_TCB gfxTCB;
|
|
||||||
static CPU_STK_SIZE gfxStk[APP_CFG_TASK_START_STK_SIZE];
|
|
||||||
static void gfxThread(void *arg);
|
|
||||||
|
|
||||||
static int running = 0;
|
|
||||||
|
|
||||||
int main (void)
|
|
||||||
{
|
|
||||||
OS_ERR err;
|
|
||||||
running = 1;
|
|
||||||
|
|
||||||
OSInit(&err);
|
|
||||||
OS_CPU_SysTickInit();
|
|
||||||
|
|
||||||
OSTaskCreate((OS_TCB *)&App_TaskStartTCB,
|
|
||||||
(CPU_CHAR *)"App Task Start",
|
|
||||||
(OS_TASK_PTR ) App_TaskStart,
|
|
||||||
(void *) 0,
|
|
||||||
(OS_PRIO ) APP_CFG_TASK_START_PRIO,
|
|
||||||
(CPU_STK *)&App_TaskStartStk[0],
|
|
||||||
(CPU_STK )(APP_CFG_TASK_START_STK_SIZE / 10u),
|
|
||||||
(CPU_STK_SIZE) APP_CFG_TASK_START_STK_SIZE,
|
|
||||||
(OS_MSG_QTY ) 0,
|
|
||||||
(OS_TICK ) 0,
|
|
||||||
(void *) 0,
|
|
||||||
(OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
|
|
||||||
(OS_ERR *)&err);
|
|
||||||
|
|
||||||
OSTaskCreate((OS_TCB *)&gfxTCB,
|
|
||||||
(CPU_CHAR *)"gfx",
|
|
||||||
(OS_TASK_PTR ) gfxThread,
|
|
||||||
(void *) 0,
|
|
||||||
(OS_PRIO ) APP_CFG_TASK_START_PRIO,
|
|
||||||
(CPU_STK *)&gfxStk[0],
|
|
||||||
(CPU_STK )(APP_CFG_TASK_START_STK_SIZE / 10u),
|
|
||||||
(CPU_STK_SIZE) APP_CFG_TASK_START_STK_SIZE,
|
|
||||||
(OS_MSG_QTY ) 0,
|
|
||||||
(OS_TICK ) 0,
|
|
||||||
(void *) 0,
|
|
||||||
(OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
|
|
||||||
(OS_ERR *)&err);
|
|
||||||
|
|
||||||
OSStart(&err);
|
|
||||||
|
|
||||||
printf("OSStart returned, quitting\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void App_TaskStart(void *p_arg)
|
|
||||||
{
|
|
||||||
|
|
||||||
(void) p_arg;
|
|
||||||
OS_ERR os_err;
|
|
||||||
|
|
||||||
// OS_CPU_SysTickInit();
|
|
||||||
|
|
||||||
while (running)
|
|
||||||
{
|
|
||||||
printf("uCOS-III is running.\n");
|
|
||||||
OSTimeDlyHMSM(0u, 0u, 1u, 0u, OS_OPT_TIME_HMSM_STRICT, &os_err);
|
|
||||||
}
|
|
||||||
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void gfxThread(void *arg)
|
|
||||||
{
|
|
||||||
(void) arg;
|
|
||||||
OS_ERR os_err;
|
|
||||||
|
|
||||||
int pos = 0;
|
|
||||||
SDL_Event eventListener;
|
|
||||||
|
|
||||||
gfx_init();
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
SDL_PollEvent(&eventListener);
|
|
||||||
if(eventListener.type == SDL_QUIT) break;
|
|
||||||
|
|
||||||
gfx_clearScreen();
|
|
||||||
point_t origin = {0, pos};
|
|
||||||
color_t color_red = {255, 0, 0};
|
|
||||||
color_t color_white = {255, 255, 255};
|
|
||||||
gfx_drawRect(origin, SCREEN_WIDTH, 20, color_red, 1);
|
|
||||||
gfx_print(origin, FONT_SIZE_4, TEXT_ALIGN_LEFT,
|
|
||||||
color_white, "KEK");
|
|
||||||
gfx_render();
|
|
||||||
while(gfx_renderingInProgress()) ;
|
|
||||||
pos += 20;
|
|
||||||
if(pos > SCREEN_HEIGHT - 20) pos = 0;
|
|
||||||
|
|
||||||
OSTimeDlyHMSM(0u, 0u, 0u, 100u, OS_OPT_TIME_HMSM_STRICT, &os_err);
|
|
||||||
}
|
|
||||||
|
|
||||||
running = 0;
|
|
||||||
OSTimeDlyHMSM(0u, 0u, 0u, 100u, OS_OPT_TIME_HMSM_STRICT, &os_err);
|
|
||||||
gfx_terminate();
|
|
||||||
}
|
|
|
@ -1,52 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2020 - 2025 by Federico Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <interfaces/graphics.h>
|
|
||||||
#include <interfaces/platform.h>
|
|
||||||
#include <interfaces/delays.h>
|
|
||||||
#include "ui.h"
|
|
||||||
|
|
||||||
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
platform_init();
|
|
||||||
// Init the graphic stack
|
|
||||||
gfx_init();
|
|
||||||
gfx_clearScreen();
|
|
||||||
gfx_render();
|
|
||||||
platform_setBacklightLevel(255);
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
for(int tot=1; tot<=10; tot++)
|
|
||||||
{
|
|
||||||
gfx_clearScreen();
|
|
||||||
for(int cur=1; cur<=tot; cur++)
|
|
||||||
{
|
|
||||||
gfx_printLine(cur, tot, 0, 0, 0, FONT_SIZE_8PT, TEXT_ALIGN_CENTER,
|
|
||||||
color_white, "Line %2d of %2d", cur, tot);
|
|
||||||
}
|
|
||||||
gfx_render();
|
|
||||||
// Sleep for 1 second
|
|
||||||
sleepFor(1u, 0u);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,106 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2020 - 2025 by Federico Amedeo Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Frederik Saraci IU2NRO *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
// ####### DISCLAIMER #########
|
|
||||||
// This test overwrites a portion of the SPI flash memory
|
|
||||||
// Run this only if you know what you are doing!
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include "W25Qx.h"
|
|
||||||
|
|
||||||
void printChunk(void *chunk)
|
|
||||||
{
|
|
||||||
uint8_t *ptr = ((uint8_t *) chunk);
|
|
||||||
for(size_t i = 0; i < 16; i++) printf("%02x ", ptr[i]);
|
|
||||||
for(size_t i = 0; i < 16; i++)
|
|
||||||
{
|
|
||||||
if((ptr[i] > 0x22) && (ptr[i] < 0x7f)) printf("%c", ptr[i]);
|
|
||||||
else printf(".");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
W25Qx_init();
|
|
||||||
W25Qx_wakeup();
|
|
||||||
|
|
||||||
uint8_t testData[16] = {0};
|
|
||||||
uint8_t buffer[256] = {0};
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
getchar();
|
|
||||||
|
|
||||||
// On UV380 flash at 0x6000 there are 36032 bytes of 0xFF
|
|
||||||
uint32_t addr = 0x6000;
|
|
||||||
printf("Read memory @ 0x%x\r\n", addr);
|
|
||||||
W25Qx_readData(addr, buffer, 256);
|
|
||||||
for (int offset = 0; offset < 256; offset += 16)
|
|
||||||
{
|
|
||||||
printf("\r\n%lx: ", addr + offset);
|
|
||||||
printChunk(buffer + offset);
|
|
||||||
}
|
|
||||||
// Prepare test data
|
|
||||||
for(int i = 0; i < 16; i++)
|
|
||||||
{
|
|
||||||
testData[i] = 'a' + (i % 16);
|
|
||||||
}
|
|
||||||
printf("\r\nOverwrite memory @ 0x6000... ");
|
|
||||||
bool success = W25Qx_writeData(addr, testData, 16);
|
|
||||||
printf("%s\r\n", success ? "success" : "failed");
|
|
||||||
|
|
||||||
printf("Read memory @ 0x%x\r\n", addr);
|
|
||||||
W25Qx_readData(addr, buffer, 256);
|
|
||||||
for (int offset = 0; offset < 256; offset += 16)
|
|
||||||
{
|
|
||||||
printf("\r\n%lx: ", addr + offset);
|
|
||||||
printChunk(buffer + offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t blockAddr = addr / 4096 * 4096;
|
|
||||||
printf("\r\nErase memory @ 0x%x... ", blockAddr);
|
|
||||||
success = W25Qx_eraseSector(blockAddr);
|
|
||||||
printf("%s\r\n", success ? "success" : "failed");
|
|
||||||
|
|
||||||
printf("Read memory @ 0x%x\r\n", addr);
|
|
||||||
W25Qx_readData(addr, buffer, 256);
|
|
||||||
for (int offset = 0; offset < 256; offset += 16)
|
|
||||||
{
|
|
||||||
printf("\r\n%lx: ", addr + offset);
|
|
||||||
printChunk(buffer + offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("\r\nWrite memory @ 0x%x... ", addr);
|
|
||||||
success = W25Qx_writePage(addr, testData, 16);
|
|
||||||
printf("%s\r\n", success ? "success" : "failed");
|
|
||||||
|
|
||||||
printf("Read memory @ 0x%x\r\n", addr);
|
|
||||||
W25Qx_readData(addr, buffer, 256);
|
|
||||||
for (int offset = 0; offset < 256; offset += 16)
|
|
||||||
{
|
|
||||||
printf("\r\n%lx: ", addr + offset);
|
|
||||||
printChunk(buffer + offset);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,52 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2020 - 2025 by Federico Amedeo Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Frederik Saraci IU2NRO *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <interfaces/nvmem.h>
|
|
||||||
#include <cps.h>
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
nvm_init();
|
|
||||||
|
|
||||||
uint16_t pos = 0;
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
getchar();
|
|
||||||
|
|
||||||
channel_t ch;
|
|
||||||
cps_readChannel(&ch, pos);
|
|
||||||
printf("Contact entry %d:\r\n", pos+1);
|
|
||||||
printf(" %s\r\n TX: %ld\r\n RX: %ld\r\n Mode: %s\r\n Bandwidth: %s\r\n",
|
|
||||||
ch.name,
|
|
||||||
ch.tx_frequency,
|
|
||||||
ch.rx_frequency,
|
|
||||||
(ch.mode == 1) ? "DMR" : "FM",
|
|
||||||
(ch.bandwidth == BW_12_5) ? "12.5kHz" : ((ch.bandwidth == BW_20)
|
|
||||||
? "20kHz" : "25kHz"));
|
|
||||||
puts("\r");
|
|
||||||
pos += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,44 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2021 - 2025 by Federico Amedeo Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Frederik Saraci IU2NRO *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <interfaces/platform.h>
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
platform_init();
|
|
||||||
|
|
||||||
const hwInfo_t *info = platform_getHwInfo();
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
getchar();
|
|
||||||
puts("** Hardware information **\r\n\r");
|
|
||||||
printf("- Hardware name: %s\r\n", info->name);
|
|
||||||
printf("- Band support: VHF %s, UHF %s\r\n", info->vhf_band ? "yes" : "no",
|
|
||||||
info->uhf_band ? "yes" : "no");
|
|
||||||
printf("- VHF band range: %d - %d MHz\r\n", info->vhf_minFreq, info->vhf_maxFreq);
|
|
||||||
printf("- UHF band range: %d - %d MHz\r\n", info->uhf_minFreq, info->uhf_maxFreq);
|
|
||||||
printf("- Display type: %d\r\n\r\n", info->hw_version);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2021 - 2025 by Federico Amedeo Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Frederik Saraci IU2NRO *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <interfaces/delays.h>
|
|
||||||
#include <interfaces/audio.h>
|
|
||||||
#include <interfaces/audio_path.h>
|
|
||||||
#include <audio_stream.h>
|
|
||||||
#include <interfaces/platform.h>
|
|
||||||
#include <dsp.h>
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
platform_init();
|
|
||||||
|
|
||||||
static const size_t numSamples = 45*1024; // 90kB
|
|
||||||
stream_sample_t *sampleBuf = ((stream_sample_t *) malloc(numSamples *
|
|
||||||
sizeof(stream_sample_t)));
|
|
||||||
|
|
||||||
audio_enableMic();
|
|
||||||
streamId id = inputStream_start(SOURCE_RTX, PRIO_TX, sampleBuf, numSamples,
|
|
||||||
BUF_LINEAR, 24000);
|
|
||||||
|
|
||||||
sleepFor(3u, 0u);
|
|
||||||
platform_ledOn(GREEN);
|
|
||||||
|
|
||||||
dataBlock_t audio = inputStream_getData(id);
|
|
||||||
|
|
||||||
platform_ledOff(GREEN);
|
|
||||||
platform_ledOn(RED);
|
|
||||||
sleepFor(10u, 0u);
|
|
||||||
|
|
||||||
uint16_t *ptr = ((uint16_t *) audio.data);
|
|
||||||
for(size_t i = 0; i < audio.len; i++)
|
|
||||||
{
|
|
||||||
iprintf("%04x ", __builtin_bswap16(ptr[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
while(1) ;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,39 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2020 - 2025 by Federico Amedeo Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Frederik Saraci IU2NRO *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <interfaces/platform.h>
|
|
||||||
#include <interfaces/delays.h>
|
|
||||||
#include <interfaces/gpio.h>
|
|
||||||
#include <hwconfig.h>
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
platform_init();
|
|
||||||
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
printf("%f\r\n", platform_getVolumeLevel());
|
|
||||||
delayMs(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,87 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2020 - 2025 by Federico Amedeo Izzo IU2NUO, *
|
|
||||||
* Niccolò Izzo IU2KIN *
|
|
||||||
* Frederik Saraci IU2NRO *
|
|
||||||
* Silvano Seva IU2KWO *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/> *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include "W25Qx.h"
|
|
||||||
|
|
||||||
|
|
||||||
//static const uint32_t sector_address = 0x80000;
|
|
||||||
static const uint32_t block_address = 0x3f000;
|
|
||||||
|
|
||||||
|
|
||||||
uint8_t block[256] = {0};
|
|
||||||
|
|
||||||
void printChunk(void *chunk)
|
|
||||||
{
|
|
||||||
uint8_t *ptr = ((uint8_t *) chunk);
|
|
||||||
for(size_t i = 0; i < 16; i++) printf("%02x ", ptr[i]);
|
|
||||||
for(size_t i = 0; i < 16; i++)
|
|
||||||
{
|
|
||||||
if((ptr[i] > 0x22) && (ptr[i] < 0x7f)) printf("%c", ptr[i]);
|
|
||||||
else printf(".");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
W25Qx_init();
|
|
||||||
W25Qx_wakeup();
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
getchar();
|
|
||||||
|
|
||||||
printf("Attempting write... ");
|
|
||||||
|
|
||||||
for(size_t i = 0; i < 256; i++)
|
|
||||||
{
|
|
||||||
//block[i] = 'a' + (i % 16);
|
|
||||||
block[i] = 0x00;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
for(uint32_t i = 0; i < 16; i++)
|
|
||||||
W25Qx_writePage(block_address+i * 256, block, 256);
|
|
||||||
|
|
||||||
for(uint32_t pos = 0; pos < 0x1000; pos += 16)
|
|
||||||
{
|
|
||||||
uint8_t buf[16];
|
|
||||||
(void) W25Qx_readData(block_address + pos, buf, 16);
|
|
||||||
printf("\r\n%02lx: ", block_address + pos);
|
|
||||||
printChunk(buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
//printf("\r\n\r\nAttempting erase... ");
|
|
||||||
//bool ok = W25Qx_eraseSector(sector_address);
|
|
||||||
//printf("%d\r\n", ok);
|
|
||||||
|
|
||||||
//for(uint32_t pos = 0; pos < 0xFF; pos += 16)
|
|
||||||
//{
|
|
||||||
// uint8_t buf[16];
|
|
||||||
// (void) W25Qx_readData(block_address + pos, buf, 16);
|
|
||||||
// printf("\r\n%02lx: ", pos);
|
|
||||||
// printChunk(buf);
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
Ładowanie…
Reference in New Issue