Working on fixing motor commands
This commit is contained in:
parent
00a4cb5e39
commit
e4d9a389c3
|
@ -628,6 +628,7 @@ BlumenLumen_CustomUpdate(gs_data UserData, app_state* State, context* Context)
|
||||||
r32 SecondsSinceLastSend = (r64)NanosSinceLastSend * NanosToSeconds;
|
r32 SecondsSinceLastSend = (r64)NanosSinceLastSend * NanosToSeconds;
|
||||||
bool ShouldSendCurrentState = SecondsSinceLastSend >= MotorResendStatePeriod;
|
bool ShouldSendCurrentState = SecondsSinceLastSend >= MotorResendStatePeriod;
|
||||||
|
|
||||||
|
bool SendOpen = false;
|
||||||
for (u32 i = 0; i < MotorOpenTimesCount; i++)
|
for (u32 i = 0; i < MotorOpenTimesCount; i++)
|
||||||
{
|
{
|
||||||
time_range Range = MotorOpenTimes[i];
|
time_range Range = MotorOpenTimes[i];
|
||||||
|
@ -641,10 +642,6 @@ BlumenLumen_CustomUpdate(gs_data UserData, app_state* State, context* Context)
|
||||||
#if 0
|
#if 0
|
||||||
bool SendOpen = CurrTimeInRange && !LastSendTimeInRange;
|
bool SendOpen = CurrTimeInRange && !LastSendTimeInRange;
|
||||||
bool SendClose = !CurrTimeInRange && LastSendTimeInRange;
|
bool SendClose = !CurrTimeInRange && LastSendTimeInRange;
|
||||||
#else
|
|
||||||
bool SendOpen = CurrTimeInRange && ShouldSendCurrentState;
|
|
||||||
bool SendClose = !CurrTimeInRange && ShouldSendCurrentState;
|
|
||||||
#endif
|
|
||||||
//SendOpen = SecondsSinceLastSend > 2;
|
//SendOpen = SecondsSinceLastSend > 2;
|
||||||
if (SendOpen)
|
if (SendOpen)
|
||||||
{
|
{
|
||||||
|
@ -675,10 +672,50 @@ BlumenLumen_CustomUpdate(gs_data UserData, app_state* State, context* Context)
|
||||||
MotorCommand = Packet;
|
MotorCommand = Packet;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
if (CurrTimeInRange) {
|
||||||
|
SendOpen = true;
|
||||||
|
// if the current state isn't what we want, we want to
|
||||||
|
// send immediately, rather than wait for the periodic time out
|
||||||
|
if (BLState->LastSendState != MotorState_Open)
|
||||||
|
{
|
||||||
|
ShouldSendCurrentState = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SendMotorCommand)
|
if (ShouldSendCurrentState)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (SendOpen)
|
||||||
|
{
|
||||||
|
BLState->LastSendTime = Context->SystemTime_Current;
|
||||||
|
BLState->LastSendState = MotorState_Open;
|
||||||
|
OutputDebugString("Motors: Open\n");
|
||||||
|
|
||||||
|
blumen_packet Packet = {};
|
||||||
|
Packet.Type = PacketType_MotorState;
|
||||||
|
Packet.MotorPacket.FlowerPositions[0] = 2;
|
||||||
|
Packet.MotorPacket.FlowerPositions[1] = 2;
|
||||||
|
Packet.MotorPacket.FlowerPositions[2] = 2;
|
||||||
|
MotorCommand = Packet;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BLState->LastSendTime = Context->SystemTime_Current;
|
||||||
|
BLState->LastSendState = MotorState_Closed;
|
||||||
|
OutputDebugString("Motors: Close\n");
|
||||||
|
|
||||||
|
blumen_packet Packet = {};
|
||||||
|
Packet.Type = PacketType_MotorState;
|
||||||
|
Packet.MotorPacket.FlowerPositions[0] = 1;
|
||||||
|
Packet.MotorPacket.FlowerPositions[1] = 1;
|
||||||
|
Packet.MotorPacket.FlowerPositions[2] = 1;
|
||||||
|
MotorCommand = Packet;
|
||||||
|
}
|
||||||
|
|
||||||
gs_data Msg = StructToData(&MotorCommand, blumen_packet);
|
gs_data Msg = StructToData(&MotorCommand, blumen_packet);
|
||||||
MessageQueue_Write(&BLState->OutgoingMsgQueue, Msg);
|
MessageQueue_Write(&BLState->OutgoingMsgQueue, Msg);
|
||||||
DEBUG_SentMotorCommand(MotorCommand.MotorPacket, Context->ThreadContext);
|
DEBUG_SentMotorCommand(MotorCommand.MotorPacket, Context->ThreadContext);
|
||||||
|
|
|
@ -171,6 +171,7 @@ struct blumen_lumen_state
|
||||||
system_time LastStatusUpdateTime;
|
system_time LastStatusUpdateTime;
|
||||||
|
|
||||||
system_time LastSendTime;
|
system_time LastSendTime;
|
||||||
|
bl_motor_state_value LastSendState;
|
||||||
|
|
||||||
phrase_hue StandardPatternHues;
|
phrase_hue StandardPatternHues;
|
||||||
r32 AssemblyColorsTransitionTimeLeft[BL_FLOWER_COUNT];
|
r32 AssemblyColorsTransitionTimeLeft[BL_FLOWER_COUNT];
|
||||||
|
|
|
@ -38,7 +38,8 @@ gs_const_string VoicePatternFolder = ConstString("data/blumen_animations/audio_r
|
||||||
global time_range MotorOpenTimes[] = {
|
global time_range MotorOpenTimes[] = {
|
||||||
{ 8, 00, 12, 00 },
|
{ 8, 00, 12, 00 },
|
||||||
{ 12, 30, 13, 00 },
|
{ 12, 30, 13, 00 },
|
||||||
{ 18, 00, 22, 00 }, // 7:00pm to 11:00pm
|
{ 18, 00, 22, 00 }, // 6:00pm to 10:00pm
|
||||||
|
{ 23, 05, 23, 53 },
|
||||||
};
|
};
|
||||||
global u32 MotorOpenTimesCount = CArrayLength(MotorOpenTimes); // do not edit
|
global u32 MotorOpenTimesCount = CArrayLength(MotorOpenTimes); // do not edit
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue