- Posts: 3333
Deviation v5.0.0 build with latest protocols
- vlad_vy
-
Topic Author
- Offline
Less
More
16 Dec 2016 08:45 - 23 Dec 2016 10:36 #56879
by vlad_vy
Replied by vlad_vy on topic Deviation v5.0.0 build with latest protocols
Add CX20 format option to Flysky protocol
Goebish
(16.12.2016) Firmware DFU file only, you can get other components from official v5.0.0 release.
www.deviationtx.com/downloads-new/category/398-deviation-5-0-0
Files deleted, see below...
Goebish
(16.12.2016) Firmware DFU file only, you can get other components from official v5.0.0 release.
www.deviationtx.com/downloads-new/category/398-deviation-5-0-0
Files deleted, see below...
Last edit: 23 Dec 2016 10:36 by vlad_vy.
- vlad_vy
-
Topic Author
- Offline
Less
More
- Posts: 3333
16 Dec 2016 12:33 - 16 Dec 2016 12:42 #56883
by vlad_vy
Replied by vlad_vy on topic Deviation v5.0.0 build with latest protocols
victzh,
If I comment out TELEMETRY_SetTypeByProtocol at pages\common\_model_page.c, and change protocol, telemetry type do not changed up to:
1) reboot Tx
2) reload model
3) press Bind button
it's not convenient for model setup.
If I comment out TELEMETRY_SetTypeByProtocol at config\model.c, at first glance it's look like nothing changed.
I don't see sense to change anything with TELEMETRY_SetTypeByProtocol.
If I comment out TELEMETRY_SetTypeByProtocol at pages\common\_model_page.c, and change protocol, telemetry type do not changed up to:
1) reboot Tx
2) reload model
3) press Bind button
it's not convenient for model setup.
If I comment out TELEMETRY_SetTypeByProtocol at config\model.c, at first glance it's look like nothing changed.
I don't see sense to change anything with TELEMETRY_SetTypeByProtocol.
Last edit: 16 Dec 2016 12:42 by vlad_vy.
- vlad_vy
-
Topic Author
- Offline
Less
More
- Posts: 3333
16 Dec 2016 17:38 #56891
by vlad_vy
By the way, if I comment out TELEMETRY_SetTypeByProtocol at config\model.c, FrSky telemetry type not established at all. So, FrSky telemetry type established by reading modelXX.ini file only.
I think it's incorrect handling.
Replied by vlad_vy on topic Deviation v5.0.0 build with latest protocols
victzh wrote: We really need to test dropping out the call to TELEMETRY_SetTypeByProtocol, it should work for everything except FrSky - they for some reason do not set the type themselves.
By the way, if I comment out TELEMETRY_SetTypeByProtocol at config\model.c, FrSky telemetry type not established at all. So, FrSky telemetry type established by reading modelXX.ini file only.
I think it's incorrect handling.
- victzh
-
- Offline
Less
More
- Posts: 1386
16 Dec 2016 18:44 #56892
by victzh
Replied by victzh on topic Deviation v5.0.0 build with latest protocols
Usage of TELEMETRY_SetTypeByProtocol violates DRY principle - Don't Repeat Yourself. Any piece of information should be coded only in one place and not repeated - otherwise there is high potential for errors as already happened when some telemetry settings were not saved. It was TELEMETRY_SetTypeByProtocol coded improperly.
So in the long term we better get rid of it leaving only setting of telemetry type from inside of the protocol. We better investigate why protocol is not being initialized upon being set on the page and when you leave this page. There should be call to protocol initialization, otherwise it is left in some strange state - model page shows you one thing and in reality another protocol is active. All other settings work this way - they become active as soon as set, only some rare pages have "Save" button.
So in the long term we better get rid of it leaving only setting of telemetry type from inside of the protocol. We better investigate why protocol is not being initialized upon being set on the page and when you leave this page. There should be call to protocol initialization, otherwise it is left in some strange state - model page shows you one thing and in reality another protocol is active. All other settings work this way - they become active as soon as set, only some rare pages have "Save" button.
- victzh
-
- Offline
Less
More
- Posts: 1386
16 Dec 2016 18:46 #56893
by victzh
Replied by victzh on topic Deviation v5.0.0 build with latest protocols
And yes, FrSky is coded incorrectly in this aspect. They should set telemetry type before using telemetry structures.
- vlad_vy
-
Topic Author
- Offline
Less
More
- Posts: 3333
16 Dec 2016 19:11 #56894
by vlad_vy
Replied by vlad_vy on topic Deviation v5.0.0 build with latest protocols
Now I think that at both cases TELEMETRY_SetTypeByProtocol is required. If I comment out TELEMETRY_SetTypeByProtocol at config\model.c, sometimes model loaded without telemetry box at main screen. It disappears.
I think that the PB used this function no accidentally.
I think that the PB used this function no accidentally.
- victzh
-
- Offline
Less
More
- Posts: 1386
16 Dec 2016 19:15 #56895
by victzh
Replied by victzh on topic Deviation v5.0.0 build with latest protocols
I did not say it is accidental - it apparently compensates for other design decisions.
Maybe it's time to reconsider some of these decisions - if you call protocol initialization earlier then it will set the telemetry type. I will look into it.
Maybe it's time to reconsider some of these decisions - if you call protocol initialization earlier then it will set the telemetry type. I will look into it.
- vlad_vy
-
Topic Author
- Offline
Less
More
- Posts: 3333
17 Dec 2016 09:56 #56910
by vlad_vy
Replied by vlad_vy on topic Deviation v5.0.0 build with latest protocols
By the way, PROTOCOL_Load() has limit for modular protocols 4096 bytes:
Nevertheless, targets for DevoF4, DevoF7 and DevoF12E have memory limit for modular protocols = 8K (protocol.ld):
Or I'm wrong?
char *ptr = (char *)loaded_protocol;
while(size < 4096) {
len = fread(buf, 1, 256, fh);
if(len) {
memcpy(ptr, buf, len);
ptr += len;
}
size += len;
if (len != 256)
break;
}Nevertheless, targets for DevoF4, DevoF7 and DevoF12E have memory limit for modular protocols = 8K (protocol.ld):
MEMORY
{
ram (rwx) : ORIGIN = 0x20004000, LENGTH = 8K
}Or I'm wrong?
- victzh
-
- Offline
Less
More
- Posts: 1386
17 Dec 2016 21:35 #56922
by victzh
Replied by victzh on topic Deviation v5.0.0 build with latest protocols
Nice catch, Vlad. F12E does not need this at all - it has 256K MCU. Devo F4 and F7 have the same MCU as 7E, so should not be different from it.
- vlad_vy
-
Topic Author
- Offline
Less
More
- Posts: 3333
18 Dec 2016 06:59 #56934
by vlad_vy
Replied by vlad_vy on topic Deviation v5.0.0 build with latest protocols
Game over. I can't add new protocol Q303, it doesn't fit to Devo7e.
- vlad_vy
-
Topic Author
- Offline
Less
More
- Posts: 3333
18 Dec 2016 09:03 - 22 Dec 2016 14:01 #56937
by vlad_vy
Replied by vlad_vy on topic Deviation v5.0.0 build with latest protocols
Add Q303 protocol
Goebish
Devo7e excluded from these builds.
(18.12.2016) Firmware DFU file only, you can get other components from official v5.0.0 release.
www.deviationtx.com/downloads-new/category/398-deviation-5-0-0
Files deleted, see below...
Goebish
Devo7e excluded from these builds.
(18.12.2016) Firmware DFU file only, you can get other components from official v5.0.0 release.
www.deviationtx.com/downloads-new/category/398-deviation-5-0-0
Files deleted, see below...
Last edit: 22 Dec 2016 14:01 by vlad_vy.
- vlad_vy
-
Topic Author
- Offline
Less
More
- Posts: 3333
20 Dec 2016 18:10 - 20 Dec 2016 18:33 #57051
by vlad_vy
Replied by vlad_vy on topic Deviation v5.0.0 build with latest protocols
I can get rid from TELEMETRY_SetTypeByProtocol(), the telemetry initialization and set telemetry type performed only at PROTOCOL_Load(), but it do not compacting Devo7e code, it will be even slightly larger. But protocol modules (with telemetry) will be slightly smaller.
So I'm not sure it's worth to do.
void PROTOCOL_Load(int no_dlg)
{
....
if (PROTOCOL_GetTelemetryState() != PROTO_TELEM_UNSUPPORTED) {
memset(&Telemetry, 0, sizeof(Telemetry));
TELEMETRY_SetType(PROTOCOL_GetTelemetryType());
}
}
....
int PROTOCOL_GetTelemetryType()
{
int telem_type = TELEM_DEVO;
if(Model.protocol != PROTOCOL_NONE && PROTOCOL_LOADED)
telem_type = (long)PROTO_Cmds(PROTOCMD_TELEMETRYTYPE);
return telem_type;
}
case PROTOCMD_TELEMETRYSTATE:
return (void *)(long)(Model.proto_opts[PROTOOPTS_TELEMETRY] == TELEM_ON ? PROTO_TELEM_ON : PROTO_TELEM_OFF);
case PROTOCMD_TELEMETRYTYPE:
return (void *)(long) TELEM_DSM;
default: break;So I'm not sure it's worth to do.
Last edit: 20 Dec 2016 18:33 by vlad_vy.
- vlad_vy
-
Topic Author
- Offline
Less
More
- Posts: 3333
22 Dec 2016 14:04 - 23 Dec 2016 10:37 #57122
by vlad_vy
Replied by vlad_vy on topic Deviation v5.0.0 build with latest protocols
Nothing brand new, reworked "set telemetry type" to simplify things for protocol developers. Partially you can see that above.
github.com/DeviationTX/deviation/pull/85/files
vladislavy
Standard Devo7e excluded from these builds.
(21.12.2016) Firmware DFU file only, you can get other components from official v5.0.0 release.
www.deviationtx.com/downloads-new/category/398-deviation-5-0-0
Files deleted, see below...
github.com/DeviationTX/deviation/pull/85/files
vladislavy
Standard Devo7e excluded from these builds.
(21.12.2016) Firmware DFU file only, you can get other components from official v5.0.0 release.
www.deviationtx.com/downloads-new/category/398-deviation-5-0-0
Files deleted, see below...
Last edit: 23 Dec 2016 10:37 by vlad_vy.
- vlad_vy
-
Topic Author
- Offline
Less
More
- Posts: 3333
23 Dec 2016 10:40 - 05 Jan 2017 08:05 #57150
by vlad_vy
Replied by vlad_vy on topic Deviation v5.0.0 build with latest protocols
Nothing brand new, compacted binary to fit devo7e
vladislavy
Devo7e with us again !!!
(23.12.2016) Firmware DFU file only, you can get other components from official v5.0.0 release.
www.deviationtx.com/downloads-new/category/398-deviation-5-0-0
Files deleted, see below...
vladislavy
Devo7e with us again !!!
(23.12.2016) Firmware DFU file only, you can get other components from official v5.0.0 release.
www.deviationtx.com/downloads-new/category/398-deviation-5-0-0
Files deleted, see below...
Last edit: 05 Jan 2017 08:05 by vlad_vy.
- SeByDocKy
-
- Offline
Less
More
- Posts: 1016
30 Dec 2016 09:05 #57355
by SeByDocKy
Replied by SeByDocKy on topic Deviation v5.0.0 build with latest protocols
Something have been changed recently in the last NB concerning the Multimodule ? coz I installed the last 12-23 build and got a missing "Multimodule" while for deviation-devo10-v5.0.0-7df3df6 is still working fine
- SeByDocKy
-
- Offline
Less
More
- Posts: 1016
30 Dec 2016 09:20 - 30 Dec 2016 09:22 #57356
by SeByDocKy
Replied by SeByDocKy on topic Deviation v5.0.0 build with latest protocols
I tested all recent NB. The last working is the 12-18, the first faulty for multimodule is from 12-20....
EDIT for the Devo10
EDIT for the Devo10
Last edit: 30 Dec 2016 09:22 by SeByDocKy.
- vlad_vy
-
Topic Author
- Offline
Less
More
- Posts: 3333
30 Dec 2016 12:28 #57359
by vlad_vy
Replied by vlad_vy on topic Deviation v5.0.0 build with latest protocols
I don't understand.
If it related to master branch "Nightly Builds", you can ask victzh, at 19-20 December he done many changes.
If it related to my "Deviation v5.0.0 build with latest protocols", I don't know, I change nothing related to Multimodule.
If it related to master branch "Nightly Builds", you can ask victzh, at 19-20 December he done many changes.
If it related to my "Deviation v5.0.0 build with latest protocols", I don't know, I change nothing related to Multimodule.
- SeByDocKy
-
- Offline
Less
More
- Posts: 1016
30 Dec 2016 12:41 #57360
by SeByDocKy
Replied by SeByDocKy on topic Deviation v5.0.0 build with latest protocols
Sorry .... I believed both were related ... I will contact him
- vlad_vy
-
Topic Author
- Offline
Less
More
- Posts: 3333
05 Jan 2017 08:07 - 07 Jan 2017 07:39 #57548
by vlad_vy
Replied by vlad_vy on topic Deviation v5.0.0 build with latest protocols
Rewrite of ESky150 protocol to include binding, from TheRealMoeder
Add Cheerson CX35 format to Q303 protocol, from goebish
(05.01.2017) Firmware DFU file only, you can get other components from official v5.0.0 release.
www.deviationtx.com/downloads-new/category/398-deviation-5-0-0
Files deleted, see below...
Add Cheerson CX35 format to Q303 protocol, from goebish
(05.01.2017) Firmware DFU file only, you can get other components from official v5.0.0 release.
www.deviationtx.com/downloads-new/category/398-deviation-5-0-0
Files deleted, see below...
Last edit: 07 Jan 2017 07:39 by vlad_vy.
- vlad_vy
-
Topic Author
- Offline
Less
More
- Posts: 3333
06 Jan 2017 17:14 - 06 Jan 2017 17:15 #57596
by vlad_vy
Replied by vlad_vy on topic Deviation v5.0.0 build with latest protocols
I'm looking into "Add Cheerson CX35 format to Q303 protocol", from goebish, at master branch, and I have some consideration about sound:
at target\common\devo\sound.c in case the pause at music we have division by zero for "period" ({"xx", 0})
so will be better to change code:
and revert change at music.c:
at target\common\devo\sound.c in case the pause at music we have division by zero for "period" ({"xx", 0})
void SOUND_SetFrequency(unsigned frequency, unsigned volume)
{
if (volume == 0) {
//We need to keep the timer running (for the vibration motor, but also in case there is a pause in the music)
//But don't want the buzzer running
timer_disable_oc_output(_SOUND_TIM, _SOUND_TIM_OC);
} else {
timer_enable_oc_output(_SOUND_TIM, _SOUND_TIM_OC);
}
/* volume is between 0 and 100 */
/* period = 14400000 / frequency */
/* A Period of 65535 gives a ~ 220Hz tone */
/* The Devo buzzer reaches max-volume with a pw ~ 100us. That is max volume */
/* use quadratic to approximate exponential volume control */
u32 period = 14400000 / frequency;
/* Taylor series: x + x^2/2 + x^3/6 + x^4/24 */
u32 duty_cycle = (period >> 1) * (u32)volume / 100 * volume / 100 * volume / 100;
timer_set_period(_SOUND_TIM, period);
timer_set_oc_value(_SOUND_TIM, _SOUND_TIM_OC, duty_cycle);
}so will be better to change code:
void SOUND_SetFrequency(unsigned frequency, unsigned volume)
{
if(frequency == 0) {
volume = 0;
frequency = 220;
}
if (volume == 0) {
//We need to keep the timer running (for the vibration motor, but also in case there is a pause in the music)
//But don't want the buzzer running
timer_disable_oc_output(_SOUND_TIM, _SOUND_TIM_OC);
} else {
timer_enable_oc_output(_SOUND_TIM, _SOUND_TIM_OC);
}
/* volume is between 0 and 100 */
/* period = 14400000 / frequency */
/* A Period of 65535 gives a ~ 220Hz tone */
/* The Devo buzzer reaches max-volume with a pw ~ 100us. That is max volume */
/* use quadratic to approximate exponential volume control */
u32 period = 14400000 / frequency;
/* Taylor series: x + x^2/2 + x^3/6 + x^4/24 */
u32 duty_cycle = (period >> 1) * (u32)volume / 100 * volume / 100 * volume / 100;
timer_set_period(_SOUND_TIM, period);
timer_set_oc_value(_SOUND_TIM, _SOUND_TIM_OC, duty_cycle);
}and revert change at music.c:
static const struct NoteMap note_map[] = {
#ifdef EMULATOR
{"xx", 0}, // 10 Hz tone makes the emulator crash
#else
{"xx", 10}, // 0 Hz doesn't work well on actual hardware
#endif
{"a", 220}, {"ax", 233}, {"b", 247},
Last edit: 06 Jan 2017 17:15 by vlad_vy.
Time to create page: 0.181 seconds
-
Home
-
Forum
-
Development
-
Builds
- Deviation v5.0.0 build with latest protocols