pre-first-release

This commit is contained in:
ADElectronics 2017-12-26 20:49:06 +03:00
parent c6c5eeed6f
commit 9e39a46764
76 changed files with 190786 additions and 90598 deletions

Binary file not shown.

View file

@ -0,0 +1 @@
<UserSettings><ApplicationIdentity version="14.0"/><ToolsOptions/><Category name="Environment_Group" RegisteredName="Environment_Group"><Category name="Environment_ExternalTools" Category="{E8FAE9E8-FBA2-4474-B134-AB0FFCFB291D}" Package="{DA9FB551-C724-11d0-AE1F-00A0C90FFFC3}" RegisteredName="Environment_ExternalTools" PackageName="Visual Studio Environment Package"><ExternalTools><UserCreatedTool><Arguments>-s runram</Arguments><CloseOnExit>true</CloseOnExit><Command>mingw32-make.exe</Command><Index>0</Index><InitialDirectory>$(ProjectDir)</InitialDirectory><IsGUIapp>false</IsGUIapp><NameID>0</NameID><Package>{00000000-0000-0000-0000-000000000000}</Package><PromptForArguments>false</PromptForArguments><SaveAllDocs>true</SaveAllDocs><Title>[RTL] Run in RAM</Title><Unicode>false</Unicode><UseOutputWindow>true</UseOutputWindow><UseTaskList>false</UseTaskList></UserCreatedTool><UserCreatedTool><Arguments>-s runsdram</Arguments><CloseOnExit>true</CloseOnExit><Command>mingw32-make.exe</Command><Index>1</Index><InitialDirectory>$(ProjectDir)</InitialDirectory><IsGUIapp>false</IsGUIapp><NameID>0</NameID><Package>{00000000-0000-0000-0000-000000000000}</Package><PromptForArguments>false</PromptForArguments><SaveAllDocs>true</SaveAllDocs><Title>[RTL] Run in SDRAM</Title><Unicode>false</Unicode><UseOutputWindow>true</UseOutputWindow><UseTaskList>false</UseTaskList></UserCreatedTool><UserCreatedTool><Arguments>-s flashburn</Arguments><CloseOnExit>true</CloseOnExit><Command>mingw32-make.exe</Command><Index>2</Index><InitialDirectory>$(ProjectDir)</InitialDirectory><IsGUIapp>false</IsGUIapp><NameID>0</NameID><Package>{00000000-0000-0000-0000-000000000000}</Package><PromptForArguments>false</PromptForArguments><SaveAllDocs>true</SaveAllDocs><Title>[RTL] Flash and Run</Title><Unicode>false</Unicode><UseOutputWindow>true</UseOutputWindow><UseTaskList>false</UseTaskList></UserCreatedTool><UserCreatedTool><Arguments>-s flashboot</Arguments><CloseOnExit>true</CloseOnExit><Command>mingw32-make.exe</Command><Index>3</Index><InitialDirectory>$(ProjectDir)</InitialDirectory><IsGUIapp>false</IsGUIapp><NameID>0</NameID><Package>{00000000-0000-0000-0000-000000000000}</Package><PromptForArguments>false</PromptForArguments><SaveAllDocs>true</SaveAllDocs><Title>[RTL] Flash Boot</Title><Unicode>false</Unicode><UseOutputWindow>true</UseOutputWindow><UseTaskList>false</UseTaskList></UserCreatedTool><UserCreatedTool><Arguments>-s flashwebfs</Arguments><CloseOnExit>true</CloseOnExit><Command>mingw32-make.exe</Command><Index>4</Index><InitialDirectory>$(ProjectDir)</InitialDirectory><IsGUIapp>false</IsGUIapp><NameID>0</NameID><Package>{00000000-0000-0000-0000-000000000000}</Package><PromptForArguments>false</PromptForArguments><SaveAllDocs>true</SaveAllDocs><Title>[RTL] Flash WEB Image</Title><Unicode>false</Unicode><UseOutputWindow>true</UseOutputWindow><UseTaskList>false</UseTaskList></UserCreatedTool><UserCreatedTool><Arguments>-s reset</Arguments><CloseOnExit>true</CloseOnExit><Command>mingw32-make.exe</Command><Index>5</Index><InitialDirectory>$(ProjectDir)</InitialDirectory><IsGUIapp>false</IsGUIapp><NameID>0</NameID><Package>{00000000-0000-0000-0000-000000000000}</Package><PromptForArguments>false</PromptForArguments><SaveAllDocs>true</SaveAllDocs><Title>[RTL] Reset CPU</Title><Unicode>false</Unicode><UseOutputWindow>true</UseOutputWindow><UseTaskList>false</UseTaskList></UserCreatedTool><UserCreatedTool><Arguments>-select USB -device Cortex-M3 -if SWD -speed 1000 -ir</Arguments><CloseOnExit>false</CloseOnExit><Command>JLinkGDBServer.exe</Command><Index>6</Index><InitialDirectory>$(ProjectDir)</InitialDirectory><IsGUIapp>true</IsGUIapp><NameID>0</NameID><Package>{00000000-0000-0000-0000-000000000000}</Package><PromptForArguments>false</PromptForArguments><SaveAllDocs>true</SaveAllDocs><Title>[RTL] Start J-Link GDB Server M3</Title><Unicode>false</Unicode><UseOutputWindow>false</UseOutputWindow><UseTaskList>false</UseTaskList></UserCreatedTool><UserCreatedTool><Arguments>-select USB -device Cortex-M4 -if SWD -speed 1000 -ir</Arguments><CloseOnExit>false</CloseOnExit><Command>JLinkGDBServer.exe</Command><Index>7</Index><InitialDirectory>$(ProjectDir)</InitialDirectory><IsGUIapp>true</IsGUIapp><NameID>0</NameID><Package>{00000000-0000-0000-0000-000000000000}</Package><PromptForArguments>false</PromptForArguments><SaveAllDocs>true</SaveAllDocs><Title>[RTL] Start J-Link GDB Server M4</Title><Unicode>false</Unicode><UseOutputWindow>false</UseOutputWindow><UseTaskList>false</UseTaskList></UserCreatedTool><ExcludeRegisteredTool SourceKeyName="Error Loo&amp;kup"/><ExcludeRegisteredTool SourceKeyName="Sp&amp;y++"/><ExcludeRegisteredTool SourceKeyName="Spy++ (x64)"/><ExcludeRegisteredTool SourceKeyName="PreEmptive Protection - Dot&amp;fuscator"/><ExcludeRegisteredTool SourceKeyName="Create GUID"/></ExternalTools></Category></Category></UserSettings>

Binary file not shown.

View file

@ -1,10 +1,5 @@
 ===========================================================
Compile (Debug)
project/user_start.c
project/WS2812/ledfilters.c
project/WS2812/ledeffectsserver.c
project/web/web_int_callbacks.c
project/web/web_int_vars.c
===========================================================
Link (Debug)
===========================================================
@ -18,9 +13,9 @@
copy size 8520
===========================================================
Create image2ns (Debug/bin/ram_2.ns.bin)
b:268460032 s:268460032 e:268727448
size 267416
copy size 267416
b:268460032 s:268460032 e:268728976
size 268944
copy size 268944
===========================================================
Create image3 (SDRAM, Debug/bin/sdram.p.bin)
30000000 30000000
@ -29,21 +24,21 @@
copy size 0
===========================================================
Make OTA image (Debug/bin/ota.bin)
size = 267448
size = 268976
checksum 1a71a99
checksum 1aa0f6e
===========================================================
Create image2p (Debug/bin/ram_2.p.bin)
b:268460032 s:268460032 e:268727448
size 267416
copy size 267416
b:268460032 s:268460032 e:268728976
size 268944
copy size 268944
===========================================================
Make Flash image (Debug/bin/ram_all.bin)
total 44 k, padding data 0, name Debug/bin/ram_all.bin
Original size zd
Padding size zd
-----------------------------------------------------------
Image (Debug/bin/ota.bin) size 267452 bytes
Image (Debug/bin/ram_all.bin) size 312504 bytes
Image (Debug/bin/ota.bin) size 268980 bytes
Image (Debug/bin/ram_all.bin) size 314032 bytes
===========================================================

Binary file not shown.

Binary file not shown.

View file

@ -1,9 +1,34 @@
ws_striplen
ws_striplen
wifi_st_ssid
wifi_st_psw
wifi_st_ip
wifi_ap_ssid
wifi_ap_psw
wifi_ap_ip
ws_isenable
ws_filt_rbw_enbl
ws_filt_flick_enbl
ws_filt_fd_enbl
ws_filt_rbw_huesteps
ws_filt_rbw_cyclesteps
ws_filt_fd_enbl
ws_filt_fd_cyclesteps
ws_filt_fd_min
ws_filt_fd_max
ws_filt_fd_chance
ws_filt_wave_enbl
ws_filt_wave_step
ws_filt_wave_wavesteps
wifi_mode
wifi_bgn
wifi_txpow
wifi_st_ssid
wifi_st_psw
wifi_st_auth
wifi_st_ip
wifi_ap_ssid
wifi_ap_psw
wifi_ap_auth
wifi_ap_ip
ws_filt_const_hue
ws_filt_const_sat
ws_filt_const_value

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -9,50 +9,48 @@ SemaphoreHandle_t cfg_sema = NULL;
ctx_rainbow_t filt_rainbow;
ctx_fade_t filt_fade;
ctx_const_t filt_const;
ctx_wave_t filt_wave;
void ledEffectsServer_Init()
{
cfg_sema = xSemaphoreCreateMutex();
ws2812_cfg = ws2812_Init(WS2812_LEDS_MAX);
if (ws2812_cfg == NULL)
{
printf("[%s] ws2812_Init() failed\n", __func__);
goto error;
return;
}
ledFilter_Init(&strip, ws2812_cfg);
ledFilter_InitRainbow(&filt_rainbow);
ledFilter_InitFade(&filt_fade);
ledFilter_InitConstant(&filt_const);
ledFilter_InitWave(&filt_wave);
ledFilter_SetDefualtValue(&strip, MAX_STRIP_BRIGHT);
filt_fade.enabled = 1;
}
void ledEffectsServer_Task()
{
cfg_sema = xSemaphoreCreateMutex();
while (1)
{
if(xSemaphoreTake(cfg_sema, 5 * configTICK_RATE_HZ))
if (xSemaphoreTake(cfg_sema, 5 * configTICK_RATE_HZ))
{
ledFilter_Rainbow(&filt_rainbow, &strip);
ledFilter_Constant(&filt_const, &strip);
ledFilter_Wave(&filt_wave, &strip);
ledFilter_Fade(&filt_fade, &strip);
ws2812_Update(ws2812_cfg, strip.hsv_vals, strip.strip_len, strip.delay);
xSemaphoreGive(cfg_sema);
}
WDGRefresh();
}
error:
while (1)
{
vTaskDelay(1000);
}
}
/*
void ledEffectsServer_LoadConfigFromFlash()

View file

@ -5,14 +5,14 @@
// Ïóáëè÷íûå êîíôèíãè ôèëüòðîâ
extern strip_handler_t strip;
extern ctx_rainbow_t filt_rainbow;
extern ctx_fade_t filt_fade;
extern ctx_const_t filt_const;
extern ctx_wave_t filt_wave;
void ledEffectsServer_Init();
void ledEffectsServer_Task();
#endif // _LEDEFFECTSSERVER_H_

View file

@ -2,6 +2,41 @@
extern uint32_t cfg_updated;
uint8_t sin_table[256] = {
0x80, 0x83, 0x86, 0x89, 0x8C, 0x90, 0x93, 0x96,
0x99, 0x9C, 0x9F, 0xA2, 0xA5, 0xA8, 0xAB, 0xAE,
0xB1, 0xB3, 0xB6, 0xB9, 0xBC, 0xBF, 0xC1, 0xC4,
0xC7, 0xC9, 0xCC, 0xCE, 0xD1, 0xD3, 0xD5, 0xD8,
0xDA, 0xDC, 0xDE, 0xE0, 0xE2, 0xE4, 0xE6, 0xE8,
0xEA, 0xEB, 0xED, 0xEF, 0xF0, 0xF1, 0xF3, 0xF4,
0xF5, 0xF6, 0xF8, 0xF9, 0xFA, 0xFA, 0xFB, 0xFC,
0xFD, 0xFD, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFD,
0xFD, 0xFC, 0xFB, 0xFA, 0xFA, 0xF9, 0xF8, 0xF6,
0xF5, 0xF4, 0xF3, 0xF1, 0xF0, 0xEF, 0xED, 0xEB,
0xEA, 0xE8, 0xE6, 0xE4, 0xE2, 0xE0, 0xDE, 0xDC,
0xDA, 0xD8, 0xD5, 0xD3, 0xD1, 0xCE, 0xCC, 0xC9,
0xC7, 0xC4, 0xC1, 0xBF, 0xBC, 0xB9, 0xB6, 0xB3,
0xB1, 0xAE, 0xAB, 0xA8, 0xA5, 0xA2, 0x9F, 0x9C,
0x99, 0x96, 0x93, 0x90, 0x8C, 0x89, 0x86, 0x83,
0x80, 0x7D, 0x7A, 0x77, 0x74, 0x70, 0x6D, 0x6A,
0x67, 0x64, 0x61, 0x5E, 0x5B, 0x58, 0x55, 0x52,
0x4F, 0x4D, 0x4A, 0x47, 0x44, 0x41, 0x3F, 0x3C,
0x39, 0x37, 0x34, 0x32, 0x2F, 0x2D, 0x2B, 0x28,
0x26, 0x24, 0x22, 0x20, 0x1E, 0x1C, 0x1A, 0x18,
0x16, 0x15, 0x13, 0x11, 0x10, 0x0F, 0x0D, 0x0C,
0x0B, 0x0A, 0x08, 0x07, 0x06, 0x06, 0x05, 0x04,
0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03,
0x03, 0x04, 0x05, 0x06, 0x06, 0x07, 0x08, 0x0A,
0x0B, 0x0C, 0x0D, 0x0F, 0x10, 0x11, 0x13, 0x15,
0x16, 0x18, 0x1A, 0x1C, 0x1E, 0x20, 0x22, 0x24,
0x26, 0x28, 0x2B, 0x2D, 0x2F, 0x32, 0x34, 0x37,
0x39, 0x3C, 0x3F, 0x41, 0x44, 0x47, 0x4A, 0x4D,
0x4F, 0x52, 0x55, 0x58, 0x5B, 0x5E, 0x61, 0x64,
0x67, 0x6A, 0x6D, 0x70, 0x74, 0x77, 0x7A, 0x7D
};
#pragma region Áàçîâûå ôóíêöèè ïî ðàáîòå ñ ôèëüòðàìè
int32_t ledFilter_Init(strip_handler_t *strip, ws2812_t *ws2812)
{
@ -12,7 +47,7 @@ int32_t ledFilter_Init(strip_handler_t *strip, ws2812_t *ws2812)
strip->strip_len = DEF_STRIP_LEN;
strip->delay = 10;
strip->brightness = MAX_STRIP_BRIGHT;
strip->isEnable = 1;
cfg_updated = 1;
}
@ -79,7 +114,7 @@ void ledFilter_Rainbow(ctx_rainbow_t *ctx, strip_handler_t *strip)
ws2812_hsv_t tmp_hsv;
uint8_t tmp_hue;
if (ctx->enabled == 0) return;
if (ctx->enabled == 0 || strip->isEnable == 0) return;
tmp_hue = ctx->curr_hue;
tmp_hsv.sat = 255;
@ -96,7 +131,7 @@ void ledFilter_Rainbow(ctx_rainbow_t *ctx, strip_handler_t *strip)
tmp_hsv.value = strip->hsv_vals[i].value;
strip->hsv_vals[i] = tmp_hsv;
tmp_hue += 255/ ctx->hue_steps;
tmp_hue %= 256;
//tmp_hue %= 256;
}
ctx->curr_hue += ctx->cycle_steps;
@ -109,11 +144,11 @@ void ledFilter_InitFade(ctx_fade_t *ctx)
{
if (ctx->valid != LEDFILTERS_CFG_CHECKWORD)
{
ctx->valid = 1;
ctx->valid = LEDFILTERS_CFG_CHECKWORD;
ctx->min = 0;
ctx->max = 255;
ctx->steps = LEDFILTERS_MAX_STEPS;
ctx->enabled = 1;
ctx->enabled = 0;
cfg_updated = 1;
}
@ -130,7 +165,7 @@ void ledFilter_Fade(ctx_fade_t *ctx, strip_handler_t *strip)
{
uint32_t i;
if (ctx->enabled == 0) return;
if (ctx->enabled == 0 || strip->isEnable == 0) return;
if (ctx->curr_val == 0)
{
@ -186,24 +221,84 @@ void ledFilter_Fade(ctx_fade_t *ctx, strip_handler_t *strip)
#pragma region Wave
void ledFilter_InitWave(ctx_wave_t *ctx)
{
if (ctx->valid != LEDFILTERS_CFG_CHECKWORD)
{
ctx->valid = LEDFILTERS_CFG_CHECKWORD;
ctx->enabled = 0;
ctx->wave_steps = 20;
ctx->angle = 0;
ctx->step = 1;
cfg_updated = 1;
}
//for (uint16_t i = 0; i < 255; i++)
// sin_table[i] = (uint16_t)(sin((double)(((double)i + 2.0) * M_PI)/ 255.0) * UINT8_MAX);
}
void ledFilter_Wave(ctx_wave_t *ctx, strip_handler_t *strip)
{
uint32_t i, j;
uint8_t tmp_angle = 0;
if (ctx->enabled == 0 || strip->isEnable == 0) return;
tmp_angle = ctx->angle;
for (i = 0, j = ctx->wave_steps; i < strip->strip_len; i++)
{
if (i == j)
{
j += ctx->wave_steps;
tmp_angle = ctx->angle;
}
strip->hsv_vals[i].value = sin_table[tmp_angle]/2;
tmp_angle += 255 / ctx->wave_steps;
//tmp_angle %= 256;
}
ctx->angle += ctx->step;
}
#pragma endregion
#pragma region Constant
void ledFilter_InitConstant(ctx_const_t *ctx)
{
if (ctx->valid != LEDFILTERS_CFG_CHECKWORD)
{
ctx->valid = LEDFILTERS_CFG_CHECKWORD;
ctx->hue = 128;
ctx->sat = 255;
ctx->value = 255;
ctx->enabled = 0;
ctx->update = 0;
cfg_updated = 1;
}
}
void ledFilter_Constant(ctx_const_t *ctx, strip_handler_t *strip)
{
uint32_t i;
if (strip->isEnable == 0)
{
for (i = 0; i < strip->strip_len; i++)
{
if (strip->hsv_vals[i].value > 0)
strip->hsv_vals[i].value--;
}
return;
}
else if (ctx->enabled == 0) return;
if (ctx->update > 0)
{
for (i = 0; i < strip->strip_len; i++)
{
strip->hsv_vals[i].hue = ctx->hue;
strip->hsv_vals[i].sat = ctx->sat;
strip->hsv_vals[i].value = ctx->value;
}
ctx->update = 0;
}
}
#pragma endregion

View file

@ -48,6 +48,9 @@ typedef struct
{
uint8_t enabled;
uint32_t valid;
uint8_t wave_steps;
uint8_t step;
uint8_t angle;
} ctx_wave_t;
#pragma endregion
@ -55,6 +58,10 @@ typedef struct
typedef struct
{
uint8_t enabled;
uint8_t hue;
uint8_t sat;
uint8_t value;
uint8_t update;
uint32_t valid;
} ctx_const_t;
#pragma endregion
@ -66,6 +73,7 @@ typedef struct
uint32_t strip_len;
uint32_t brightness;
uint32_t delay;
uint8_t isEnable;
} strip_handler_t;
int32_t ledFilter_Init(strip_handler_t *strip, ws2812_t *ws2812);
@ -76,7 +84,8 @@ void ledFilter_InitFade(ctx_fade_t *ctx);
void ledFilter_Fade(ctx_fade_t *ctx, strip_handler_t *strip);
void ledFilter_InitWave(ctx_wave_t *ctx);
void ledFilter_Wave(ctx_wave_t *ctx, strip_handler_t *strip);
void ledFilter_InitConstant(ctx_const_t *ctx);
void ledFilter_Constant(ctx_const_t *ctx, strip_handler_t *strip);
void ledFilter_SetDefualtValue(strip_handler_t *strip, uint8_t val);
#endif // _LEDFILTERS_H_

View file

@ -1,6 +1,6 @@
#define UTS_VERSION "2017/12/24-02:16:14"
#define RTL8195AFW_COMPILE_TIME "2017/12/24-02:16:14"
#define RTL8195AFW_COMPILE_DATE "20171224"
#define UTS_VERSION "2017/12/26-19:51:38"
#define RTL8195AFW_COMPILE_TIME "2017/12/26-19:51:38"
#define RTL8195AFW_COMPILE_DATE "20171226"
#define RTL8195AFW_COMPILE_BY "Andrew"
#define RTL8195AFW_COMPILE_HOST ""
#define RTL8195AFW_COMPILE_DOMAIN

View file

@ -77,11 +77,13 @@ extern void console_init(void);
void user_ws_thrd(void)
{
ledEffectsServer_Init();
while (1)
{
if (xSemaphoreTake(sema_WEBReady, 10 * configTICK_RATE_HZ))
{
ledEffectsServer_Init();
ledEffectsServer_Task();
}
WDGRefresh();
}

View file

@ -404,7 +404,26 @@ void ICACHE_FLASH_ATTR web_int_callback(TCP_SERV_CONN *ts_conn, uint8 *cstr)
else ifcmp("max") tcp_puts("%d", filt_fade.max);
else ifcmp("cyclesteps") tcp_puts("%d", filt_fade.steps);
}
else ifcmp("wave_")
{
cstr += 5;
ifcmp("enbl") tcp_puts("%d", filt_wave.enabled);
else ifcmp("step") tcp_puts("%d", filt_wave.step);
else ifcmp("wavesteps") tcp_puts("%d", filt_wave.wave_steps);
}
else ifcmp("const_")
{
cstr += 6;
ifcmp("enbl") tcp_puts("%d", filt_const.enabled);
else ifcmp("hue") tcp_puts("%d", filt_const.hue);
else ifcmp("sat") tcp_puts("%d", filt_const.sat);
else ifcmp("value") tcp_puts("%d", filt_const.value);
}
}
else ifcmp("isenable") tcp_puts("%d", strip.isEnable);
else ifcmp("striplen") tcp_puts("%d", strip.strip_len);
}
// **************************************************************************************************** //
// **************************************************************************************************** //

View file

@ -113,7 +113,27 @@ void ICACHE_FLASH_ATTR web_int_vars(TCP_SERV_CONN *ts_conn, uint8 *pcmd, uint8 *
else ifcmp("max") filt_fade.max = (uint8_t)val;
else ifcmp("cyclesteps") filt_fade.steps = (uint8_t)val;
}
else ifcmp("wave_")
{
cstr += 5;
ifcmp("enbl") filt_wave.enabled = (uint8_t)val;
else ifcmp("step") filt_wave.step = (uint8_t)val;
else ifcmp("wavesteps") filt_wave.wave_steps = (uint8_t)val;
}
else ifcmp("const_")
{
cstr += 6;
ifcmp("enbl") filt_const.enabled = (uint8_t)val;
else ifcmp("hue") filt_const.hue = (uint8_t)val;
else ifcmp("sat") filt_const.sat = (uint8_t)val;
else ifcmp("value") filt_const.value = (uint8_t)val;
else ifcmp("update") filt_const.update = (uint8_t)val;
}
}
else ifcmp("isenable") strip.isEnable = (uint8_t)val;
//else ifcmp("striplen") strip.strip_len = (uint8_t)val;
}
// **************************************************************************************************** //
// **************************************************************************************************** //

View file

@ -10,7 +10,7 @@
// ====================================================================================================================================
// ============================================ Wlan Config ===========================================================================
#define DEF_WIFI_MODE RTW_MODE_STA // Стартовый режим WiFi: RTW_MODE_STA_AP, RTW_MODE_AP, RTW_MODE_STA, RTW_MODE_NONE
#define DEF_WIFI_MODE RTW_MODE_STA_AP // Стартовый режим WiFi: RTW_MODE_STA_AP, RTW_MODE_AP, RTW_MODE_STA, RTW_MODE_NONE
#define DEF_WIFI_AP_STATIONS 3 // Max number of STAs, should be 1..3, default is 3
#define DEF_WIFI_COUNTRY RTW_COUNTRY_RU // Регион использования WiFi...
#define DEF_WIFI_TX_PWR RTW_TX_PWR_PERCENTAGE_12_5 // RTW_TX_PWR_PERCENTAGE_75 // RTW_TX_PWR_PERCENTAGE_100

View file

@ -81,7 +81,6 @@
<None Include="userset.mk" />
<None Include="WEBFiles\elements.css" />
<None Include="WEBFiles\elements.js" />
<None Include="WEBFiles\html5kellycolorpicker.min.js" />
<None Include="WEBFiles\index.html" />
<None Include="webfs.mk" />
</ItemGroup>

View file

@ -38,9 +38,6 @@
<None Include="WEBFiles\elements.js">
<Filter>WEBFiles</Filter>
</None>
<None Include="WEBFiles\html5kellycolorpicker.min.js">
<Filter>WEBFiles</Filter>
</None>
<None Include="WEBFiles\index.html">
<Filter>WEBFiles</Filter>
</None>

View file

@ -1,5 +1,5 @@
define call1
set $ImageSize = 0x3BE0
set $ImageSize = 0x83C0
set $ImageAddr = 0x0D0000
end
define call2

View file

@ -1,17 +1,27 @@
body {font-family: Arial;}
.hblockcont {
text-align:center;
align:center;
}
fieldset {
display: block;
border: 0px;
margin: 20px;
}
.on, .off {
width: 80px;
height: 80px;
}
.range {
max-width: 600px;
}
.tab {
overflow: hidden;
height: 45px;
border: 1px solid #ccc;
background-color: #f1f1f1;
}
@ -49,6 +59,57 @@ fieldset {
border: 1px solid #ccc;
}
.button {
background-color: #00cc99;
border: none;
color: black;
padding: 10px 15px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
}
.select {
//background-color:#00cc99;
width: 180px;
padding: 5px;
font-size: 16px;
border: 1px solid #ccc;
height: 28px;
}
.inputtext {
width: 180px;
font-size: 16px;
border: 1px solid #ccc;
text-align: center;
height: 26px;
}
/* https://www.w3schools.com/html/html_tables.asp */
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
max-width: 500px;
}
.td1st {
border: 0px solid #dddddd;
text-align: left;
padding: 4px;
}
td {
border: 0px solid #dddddd;
text-align: right;
padding: 4px;
}
/* http://dimox.name/custom-checkboxes-and-radio-buttons-using-css-only/ */
.checkbox + label {

View file

@ -38,6 +38,22 @@ function openFilterSettings(chkbx)
sendFilterState(chkbx.name, chkbx.checked);
}
function changeOnOff(field)
{
if (field.className === 'off')
{
sendFilterParam('ws_isenable', "1");
field.src = 'on.gif';
field.className = 'on';
}
else
{
sendFilterParam('ws_isenable', "0");
field.src = 'off.gif';
field.className = 'off';
}
}
function setFormValues(form, cfg)
{
var name, field;
@ -55,6 +71,19 @@ function setFormValues(form, cfg)
field.checked = cfg[name] === '1' ? true : false;
openFilterSettings(field);
}
else if (field.type === 'image')
{
if (cfg[name] == '1')
{
field.src = 'on.gif';
field.className = 'on';
}
else
{
field.src = 'off.gif';
field.className = 'off';
}
}
else
{
field.value = cfg[name];
@ -78,6 +107,65 @@ function sendFilterState(filtName, en)
xhr.send(params);
}
function sendHSV(HSV)
{
var xhr = new XMLHttpRequest();
var hue = Math.round(255 * HSV.h);
var sat = Math.round(255 * HSV.s);
var val = Math.round(255 * HSV.v);
var params = 'ws_filt_const_hue=' + encodeURIComponent(hue) +
'&ws_filt_const_sat=' + encodeURIComponent(sat) +
'&ws_filt_const_value=' + encodeURIComponent(val) +
'&ws_filt_const_update=' + encodeURIComponent('1');
xhr.open("POST", '/index.html', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function () {
};
xhr.send(params);
}
function loadHSV(picker, HSV)
{
var hue = HSV[0] / 255;
var sat = HSV[1] / 255;
var val = HSV[2] / 255;
var rgb = hsvToRgb(hue, sat, val);
var hex = '#' + byteToHex(rgb[0]) + byteToHex(rgb[1]) + byteToHex(rgb[2]);
picker.setColorByHex(hex);
}
function byteToHex(d)
{
var hex = d.toString(16);
hex = "00".substr(0, 2 - hex.length) + hex;
return hex;
}
function hsvToRgb(h, s, v) {
var r, g, b;
var i = Math.floor(h * 6);
var f = h * 6 - i;
var p = v * (1 - s);
var q = v * (1 - f * s);
var t = v * (1 - (1 - f) * s);
switch (i % 6) {
case 0: r = v, g = t, b = p; break;
case 1: r = q, g = v, b = p; break;
case 2: r = p, g = v, b = t; break;
case 3: r = p, g = q, b = v; break;
case 4: r = t, g = p, b = v; break;
case 5: r = v, g = p, b = q; break;
}
return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
}
function sendFilterParam(filtParam, val)
{
var xhr = new XMLHttpRequest();

View file

@ -1,94 +1,256 @@
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<head>
<link href="elements.css" rel="stylesheet">
<style></style>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Глупая гирлянда</title>
<link href="elements.css" rel="stylesheet">
<style></style>
</head>
<body>
<p align="center">Ãëóïàÿ ãèðëÿíäà</p>
<div class="tab" align="center">
<button class="tablinks" onclick="openTab(event, 0)">Ôèëüòðû</button>
<button class="tablinks" onclick="openTab(event, 1)">?</button>
<button class="tablinks" onclick="openTab(event, 2)">Íàñòðîéêè</button>
<div class="hblockcont">
<input type="image" src="off.gif" class='off' name='ws_isenable' onclick="changeOnOff(this)" />
</div>
<div class="tab" align="center">
<button class="tablinks" onclick="openTab(event, 0)">Режим работы</button>
<button class="tablinks" onclick="openTab(event, 1)">Настройки Wi-Fi</button>
</div>
<div id="0" class="tabcontent" align="center">
<form method="post">
<fieldset>
<input type="checkbox" class="checkbox" id="filt0" name='ws_filt_rbw_enbl' onclick="openFilterSettings(this)" />
<label for="filt0">Ðàäóãà</label>
<label for="filt0">Радуга</label>
<input type="checkbox" class="checkbox" id="filt1" name='ws_filt_const_enbl' onclick="openFilterSettings(this)" />
<label for="filt1">Îòòåíîê</label>
<label for="filt1">Оттенок</label>
<input type="checkbox" class="checkbox" id="filt2" name='ws_filt_fd_enbl' onclick="openFilterSettings(this)" />
<label for="filt2">Âûöâåòàíèå</label>
<label for="filt2">Выцветание</label>
<input type="checkbox" class="checkbox" id="filt3" name='ws_filt_wave_enbl' onclick="openFilterSettings(this)" />
<label for="filt3">Âîëíà</label>
<label for="filt3">Волна</label>
</fieldset>
<div id="filt0" class="filtercontent">
<h4 align="center">Ðàäóãà</h4>
Ðàçìåñòèòü ïîëíóþ ðàäóãó íà ïèêñåëÿõ, åä. :<br>
<input type="range" class="range" step="1" min="10" name='ws_filt_rbw_huesteps' max="400" onchange="sendFilterParam(this.name, this.value)"/><br>
Ñêîðîñòü ñìåíû îòòåíêà:<br>
<h4 align="center">Радуга</h4>
Разместить полную радугу на пикселях, ед. :<br>
<input type="range" class="range" step="1" min="10" name='ws_filt_rbw_huesteps' max="~ws_striplen~" onchange="sendFilterParam(this.name, this.value)"/><br>
Скорость смены оттенка:<br>
<input type="range" class="range" min="1" name='ws_filt_rbw_cyclesteps' max="10" onchange="sendFilterParam(this.name, this.value)"/><br>
</div>
<div id="filt1" class="filtercontent">
<h4 align="center">Îòòåíîê</h4>
<h4 align="center">Оттенок</h4>
<canvas id="picker"></canvas><br>
<input id="color" value="#54aedb">
<input id="color" value="#007fff">
</div>
<div id="filt2" class="filtercontent">
<h4 align="center">Âûöâåòàíèå</h4>
Ñêîðîñòü ñìåíû ÿðêîñòè:<br>
<input type="range" class="range" min="1" name='ws_filt_fd_cyclesteps' max="254" onchange="sendFilterParam(this.name, this.value)"/><br>
Ìèíèìàëüíàÿ ÿðêîñòü:<br>
<h4 align="center">Выцветание</h4>
Скорость смены яркости:<br>
<input type="range" class="range" min="1" name='ws_filt_fd_cyclesteps' max="127" onchange="sendFilterParam(this.name, this.value)"/><br>
Минимальная яркость:<br>
<input type="range" class="range" min="0" name='ws_filt_fd_min' max="254" onchange="sendFilterParam(this.name, this.value)"/><br>
Ìàêñèìàëüíàÿ ÿðêîñòü:<br>
Максимальная яркость:<br>
<input type="range" class="range" min="1" name='ws_filt_fd_max' max="255" onchange="sendFilterParam(this.name, this.value)"/><br>
Øàíñ ñðàáàòûâàíèÿ:<br>
<!--
Шанс срабатывания:<br>
<input type="range" class="range" min="1" name='ws_filt_fd_chance' onchange="sendFilterParam(this.name, this.value)"/><br>
-->
</div>
<div id="filt3" class="filtercontent">
<h4 align="center">Âîëíà</h4>
<h4 align="center">Волна</h4>
Скорость:<br>
<input type="range" class="range" min="1" name='ws_filt_wave_step' max="10" onchange="sendFilterParam(this.name, this.value)" /><br>
Длина волны :<br>
<input type="range" class="range" step="1" min="10" max="128" name='ws_filt_wave_wavesteps' max="~ws_striplen~" onchange="sendFilterParam(this.name, this.value)"/><br>
</div>
</form>
</div>
<div id="1" class="tabcontent" align="center">
<h3>Íè÷åãî</h3>
<form method="post">
<table>
<tr>
<td class="td1st">Режим Wi-Fi</td>
<td>
<select class="select" name='wifi_mode'>
<option value='1'>Клиент</option>
<option value='2'>Точка доступа</option>
<option value='3'>Клиент + Точка доступа</option>
</select>
</td>
</tr>
<tr>
<td class="td1st">IEEE PHY</td>
<td>
<select class="select" name='wifi_bgn'>
<option value='1'>802.11b</option>
<option value='3'>802.11g</option>
<option value='11'>802.11n</option>
</select>
</td>
</tr>
<tr>
<td class="td1st">Мощность передачи</td>
<td>
<select class="select" name='wifi_txpow'>
<option value='0'>100%</option>
<option value='1'>75%</option>
<option value='2'>50%</option>
<option value='3'>25%</option>
<option value='4'>12.5%</option>
</select>
</td>
</tr>
<tr>
<td class="td1st"><b>Настройки клиента:</b></td>
</tr>
<tr>
<td class="td1st">SSID</td>
<td>
<input name="wifi_st_ssid" class="inputtext" maxlength='31' value='~wifi_st_ssid~'/>
</td>
</tr>
<tr>
<td class="td1st">Пароль</td>
<td>
<input name="wifi_st_psw" class="inputtext" maxlength='63' value='~wifi_st_psw~' />
</td>
</tr>
<tr>
<td class="td1st">Аутентификация</td>
<td>
<select class="select" name='wifi_st_auth'>
<option value='0'>Open</option>
<option value='1'>WEP PSK</option>
<option value='2'>WEP Shared</option>
<option value='3'>WPA TKIP</option>
<option value='4'>WPA AES</option>
<option value='5'>WPA2 TKIP</option>
<option value='6'>WPA2 AES</option>
<option value='7'>WPA2 Mixed</option>
<option value='8'>WPA2/WPA AES</option>
<option value='9'>Unknown</option>
</select>
</td>
</tr>
<tr>
<td class="td1st">IP</td>
<td>
<input name="wifi_st_ip" class="inputtext" maxlength='31' value='~wifi_st_ip~' />
</td>
</tr>
<tr>
<td class="td1st"><b>Настройки точки доступа:</b></td>
</tr>
<tr>
<td class="td1st">SSID</td>
<td>
<input name="wifi_ap_ssid" class="inputtext" maxlength='31' value='~wifi_ap_ssid~' />
</td>
</tr>
<tr>
<td class="td1st">Пароль</td>
<td>
<input name="wifi_ap_psw" class="inputtext" maxlength='63' value='~wifi_ap_psw~' />
</td>
</tr>
<tr>
<td class="td1st">Аутентификация</td>
<td>
<select class="select" name='wifi_ap_auth'>
<option value='0'>Open</option>
<option value='1'>WPA_WPA2_PSK</option>
</select>
</td>
</tr>
<tr>
<td class="td1st">IP</td>
<td>
<input name="wifi_ap_ip" class="inputtext" maxlength='31' value='~wifi_ap_ip~' />
</td>
</tr>
<tr>
<td></td>
<td>
<input type='hidden' name='wifi_newcfg' value='0xffff' />
<button class="button">Применить...</button>
</td>
</tr>
</table>
</form>
</div>
<div id="2" class="tabcontent">
<h3>Íàñòðîéêè</h3>
</div>
<script src="html5kellycolorpicker.min.js"></script>
<script src="colorpicker.min.js"></script>
<script src="elements.js"></script>
<script type="text/javascript">
/* https://github.com/NC22/HTML5-Color-Picker/wiki/Документация */
var colorPickerT = new KellyColorPicker(
{
place: 'picker',
input: 'color',
size: 300,
});
var onchange = function (self)
{
var hsv = colorPickerT.getCurColorHsv();
sendHSV(hsv);
};
//colorPickerT.addUserEvent("change", onchange);
colorPickerT.addUserEvent("mouseuph", onchange);
colorPickerT.addUserEvent("mouseupsv", onchange);
new KellyColorPicker({place : 'picker', input : 'color', size : 300});
var cfg =
{
ws_filt_rbw_enbl: "~ws_filt_rbw_enbl~",
ws_filt_flick_enbl: "~ws_filt_flick_enbl~",
ws_filt_fd_enbl: "~ws_filt_fd_enbl~",
ws_filt_rbw_huesteps: "~ws_filt_rbw_huesteps~",
ws_filt_rbw_cyclesteps: "~ws_filt_rbw_cyclesteps~",
ws_filt_fd_cyclesteps: "~ws_filt_fd_cyclesteps~",
ws_filt_fd_min: "~ws_filt_fd_min~",
ws_filt_fd_max: "~ws_filt_fd_max~",
ws_filt_fd_chance: "~ws_filt_fd_chance~"
}
setFormValues(document.forms[0], cfg);
var cfg_f0 =
{
ws_isenable: "~ws_isenable~",
}
setFormValues(document.getElementsByName("ws_isenable"), cfg_f0);
var cfg_f1 =
{
ws_filt_rbw_enbl: "~ws_filt_rbw_enbl~",
ws_filt_rbw_huesteps: "~ws_filt_rbw_huesteps~",
ws_filt_rbw_cyclesteps: "~ws_filt_rbw_cyclesteps~",
ws_filt_fd_enbl: "~ws_filt_fd_enbl~",
ws_filt_fd_cyclesteps: "~ws_filt_fd_cyclesteps~",
ws_filt_fd_min: "~ws_filt_fd_min~",
ws_filt_fd_max: "~ws_filt_fd_max~",
//ws_filt_fd_chance: "~ws_filt_fd_chance~",
ws_filt_wave_enbl: "~ws_filt_wave_enbl~",
ws_filt_wave_step: "~ws_filt_wave_step~",
ws_filt_wave_wavesteps: "~ws_filt_wave_wavesteps~"
}
setFormValues(document.forms[0], cfg_f1);
var cfg_f2 =
{
wifi_mode: "~wifi_mode~",
wifi_bgn: "~wifi_bgn~",
wifi_txpow: "~wifi_txpow~",
wifi_st_ssid: "~wifi_st_ssid~",
wifi_st_psw: "~wifi_st_psw~",
wifi_st_auth: "~wifi_st_auth~",
wifi_st_ip: "~wifi_st_ip~",
wifi_ap_ssid: "~wifi_ap_ssid~",
wifi_ap_psw: "~wifi_ap_psw~",
wifi_ap_auth: "~wifi_ap_auth~",
wifi_ap_ip: "~wifi_ap_ip~"
}
setFormValues(document.forms[1], cfg_f2);
var cfg_hsv =
{
ws_filt_const_hue: "~ws_filt_const_hue~",
ws_filt_const_sat: "~ws_filt_const_sat~",
ws_filt_const_value: "~ws_filt_const_value~"
}
loadHSV(colorPickerT, cfg_hsv);
</script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB