Message logging
This commit is contained in:
parent
9fc984d6f2
commit
f6baf22907
|
@ -107,8 +107,6 @@ AssemblyDebug_Render(panel* Panel, rect2 PanelBounds, render_command_buffer* Ren
|
|||
}break;
|
||||
}
|
||||
|
||||
ui_RangeSlider(Interface, MakeString("Test"), .5f, 0, 1);
|
||||
|
||||
ui_PopLayout(Interface, MakeString("Assembly Debug Layout"));
|
||||
}
|
||||
|
||||
|
|
|
@ -133,7 +133,8 @@ UPDATE_AND_RENDER(UpdateAndRender)
|
|||
Editor_Render(State, Context, RenderBuffer);
|
||||
}
|
||||
|
||||
#if SEND_DATA
|
||||
#define SEND_DATA
|
||||
#ifdef SEND_DATA
|
||||
// NOTE(pjs): Building data buffers to be sent out to the sculpture
|
||||
// This array is used on the platform side to actually send the information
|
||||
assembly_array SACNAssemblies = AssemblyArray_Filter(State->Assemblies, AssemblyFilter_OutputsViaSACN, State->Transient);
|
||||
|
|
|
@ -201,7 +201,7 @@ typedef struct system_time
|
|||
s32 Second;
|
||||
} system_time;
|
||||
|
||||
#define STATUS_PACKET_FREQ_SECONDS 5
|
||||
#define STATUS_PACKET_FREQ_SECONDS 2
|
||||
|
||||
struct context
|
||||
{
|
||||
|
|
|
@ -264,6 +264,11 @@ Win32SocketPeek(platform_socket* Socket)
|
|||
{
|
||||
}break;
|
||||
|
||||
case WSAECONNABORTED:
|
||||
{
|
||||
Win32CloseSocket(Socket);
|
||||
}break;
|
||||
|
||||
InvalidDefaultCase;
|
||||
}
|
||||
}
|
||||
|
@ -302,6 +307,14 @@ Win32SocketReceive(platform_socket* Socket, gs_memory_arena* Storage)
|
|||
#endif
|
||||
}
|
||||
|
||||
|
||||
typedef struct status_packet_foo
|
||||
{
|
||||
u8 NextMotorEventType;
|
||||
u32 NextEventTime;
|
||||
char AnimFileName[32];
|
||||
} status_packet;
|
||||
|
||||
internal s32
|
||||
Win32SocketSend(platform_socket* Socket, u32 Address, u32 Port, gs_data Data, s32 Flags)
|
||||
{
|
||||
|
@ -312,8 +325,11 @@ Win32SocketSend(platform_socket* Socket, u32 Address, u32 Port, gs_data Data, s3
|
|||
SockAddress.sin_port = HostToNetU16(Port);
|
||||
SockAddress.sin_addr.s_addr = HostToNetU32(Address);
|
||||
|
||||
status_packet_foo* Foo = (status_packet_foo*)Data.Memory;
|
||||
|
||||
s32 LengthSent = sendto(*Win32Sock, (char*)Data.Memory, Data.Size, Flags, (sockaddr*)&SockAddress, sizeof(sockaddr_in));
|
||||
|
||||
OutputDebugString("Attempting To Send Network Data: ");
|
||||
if (LengthSent == SOCKET_ERROR)
|
||||
{
|
||||
s32 Error = WSAGetLastError();
|
||||
|
@ -330,6 +346,12 @@ Win32SocketSend(platform_socket* Socket, u32 Address, u32 Port, gs_data Data, s3
|
|||
// TODO(Peter): :ErrorLogging
|
||||
InvalidCodePath;
|
||||
}
|
||||
|
||||
OutputDebugString("Error\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
OutputDebugString("Sent\n");
|
||||
}
|
||||
|
||||
return LengthSent;
|
||||
|
@ -368,9 +390,11 @@ Win32Socket_SendTo(platform_socket_handle SocketHandle, u32 Address, u32 Port, c
|
|||
|
||||
s32 LengthSent = sendto(Socket->Socket, Buffer, BufferLength, Flags, (sockaddr*)&SockAddress, sizeof(sockaddr_in));
|
||||
|
||||
OutputDebugString("Attempting To Send Network Data: ");
|
||||
if (LengthSent == SOCKET_ERROR)
|
||||
{
|
||||
s32 Error = WSAGetLastError();
|
||||
OutputDebugString("Error\n");
|
||||
if (Error == 10051)
|
||||
{
|
||||
}
|
||||
|
@ -380,6 +404,10 @@ Win32Socket_SendTo(platform_socket_handle SocketHandle, u32 Address, u32 Port, c
|
|||
InvalidCodePath;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
OutputDebugString("Sent\n");
|
||||
}
|
||||
|
||||
return LengthSent;
|
||||
}
|
||||
|
|
|
@ -37,26 +37,21 @@ MessageQueue_Init(blumen_network_msg_queue* Queue, gs_memory_arena* Arena)
|
|||
}
|
||||
}
|
||||
|
||||
internal gs_data*
|
||||
MessageQueue_GetWrite(blumen_network_msg_queue* Queue)
|
||||
{
|
||||
u32 Index = Queue->WriteHead++;
|
||||
gs_data* Result = &Queue->Buffers[Index];
|
||||
Assert(Result->Size > 0);
|
||||
|
||||
if (Queue->WriteHead >= PACKETS_MAX)
|
||||
{
|
||||
Queue->WriteHead = 0;
|
||||
}
|
||||
return Result;
|
||||
}
|
||||
|
||||
internal bool
|
||||
MessageQueue_Write(blumen_network_msg_queue* Queue, gs_data Msg)
|
||||
{
|
||||
gs_data* Dest = MessageQueue_GetWrite(Queue);
|
||||
Assert(Msg.Size <= DEFAULT_QUEUE_ENTRY_SIZE);
|
||||
|
||||
u32 Index = Queue->WriteHead;
|
||||
gs_data* Dest = Queue->Buffers + Index;
|
||||
CopyMemoryTo(Msg.Memory, Dest->Memory, Msg.Size);
|
||||
Dest->Size = Msg.Size;
|
||||
|
||||
// NOTE(pjs): We increment write head at the end of writing so that
|
||||
// a reader thread doesn't pull the message off before we've finished
|
||||
// filling it out
|
||||
Queue->WriteHead++;
|
||||
return true;
|
||||
}
|
||||
|
||||
internal bool
|
||||
|
@ -104,8 +99,6 @@ BlumenLumen_MicListenJob(gs_thread_context* Ctx, u8* UserData)
|
|||
u32 Port = WeathermanPort;
|
||||
s32 Flags = 0;
|
||||
SocketSend(Data->SocketManager, Data->ListenSocket, Address, Port, Msg, Flags);
|
||||
|
||||
OutputDebugString("Sending Motor Packet\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -180,7 +173,7 @@ BlumenLumen_CustomInit(app_state* State, context Context)
|
|||
BLState->MicListenJobData.OutgoingMsgQueue = &BLState->OutgoingMsgQueue;
|
||||
BLState->MicListenJobData.ListenSocket = CreateSocket(Context.SocketManager, "127.0.0.1", "20185");
|
||||
|
||||
#if 0
|
||||
#if 1
|
||||
BLState->MicListenThread = CreateThread(Context.ThreadManager, BlumenLumen_MicListenJob, (u8*)&BLState->MicListenJobData);
|
||||
#endif
|
||||
|
||||
|
@ -284,18 +277,30 @@ BlumenLumen_CustomUpdate(gs_data UserData, app_state* State, context* Context)
|
|||
State->AnimationSystem.ActiveFadeGroup.From.Index = 2;
|
||||
}
|
||||
|
||||
OutputDebugStringA("Received Pattern Packet\n");
|
||||
OutputDebugStringA("\nReceived Pattern Packet\n");
|
||||
}break;
|
||||
|
||||
case PacketType_MotorState:
|
||||
{
|
||||
motor_packet Motor = Packet.MotorPacket;
|
||||
|
||||
// NOTE(pjs): Python sends multi-byte integers in little endian
|
||||
// order. Have to unpack
|
||||
u8* T = (u8*)&Motor.Temperature;
|
||||
Motor.Temperature = (T[0] << 8 |
|
||||
T[1] << 0);
|
||||
|
||||
BLState->LastKnownMotorState = Motor;
|
||||
|
||||
gs_string Temp = PushStringF(State->Transient, 256, "Received Motor States: %d %d %d\n",
|
||||
gs_string Temp = PushStringF(State->Transient, 256, "\nReceived Motor States: \n\tPos: %d %d %d\n\tErr: %d %d %d\n\tTemp: %d\n\n",
|
||||
Motor.FlowerPositions[0],
|
||||
Motor.FlowerPositions[1],
|
||||
Motor.FlowerPositions[2]);
|
||||
Motor.FlowerPositions[2],
|
||||
Motor.MotorStatus[0],
|
||||
Motor.MotorStatus[1],
|
||||
Motor.MotorStatus[2],
|
||||
(u32)Motor.Temperature
|
||||
);
|
||||
NullTerminate(&Temp);
|
||||
|
||||
OutputDebugStringA(Temp.Str);
|
||||
|
@ -307,14 +312,14 @@ BlumenLumen_CustomUpdate(gs_data UserData, app_state* State, context* Context)
|
|||
|
||||
if (Temp.Temperature > 21)
|
||||
{
|
||||
BLState->BrightnessPercent = .5f;
|
||||
BLState->BrightnessPercent = .25f;
|
||||
}
|
||||
else
|
||||
{
|
||||
BLState->BrightnessPercent = 1.f;
|
||||
}
|
||||
|
||||
gs_string TempStr = PushStringF(State->Transient, 256, "Temperature: %d\n",
|
||||
gs_string TempStr = PushStringF(State->Transient, 256, "\nTemperature: %d\n",
|
||||
Temp.Temperature);
|
||||
NullTerminate(&TempStr);
|
||||
OutputDebugStringA(TempStr.Str);
|
||||
|
@ -334,29 +339,37 @@ BlumenLumen_CustomUpdate(gs_data UserData, app_state* State, context* Context)
|
|||
time_range Range = MotorOpenTimes[i];
|
||||
|
||||
bool CurrTimeInRange = SystemTimeIsInTimeRange(Context->SystemTime_Current, Range);
|
||||
|
||||
bool LastTimeInRange = SystemTimeIsInTimeRange(Context->SystemTime_Last, Range);
|
||||
|
||||
if (CurrTimeInRange && !LastTimeInRange)
|
||||
{
|
||||
OutputDebugString("Open\n");
|
||||
gs_data* Msg = MessageQueue_GetWrite(&BLState->OutgoingMsgQueue);
|
||||
bool SendOpen = CurrTimeInRange && !LastTimeInRange;
|
||||
|
||||
blumen_packet* Packet = (blumen_packet*)Msg->Memory;
|
||||
Packet->Type = PacketType_MotorState;
|
||||
Packet->MotorPacket.FlowerPositions[0] = 2;
|
||||
Packet->MotorPacket.FlowerPositions[1] = 2;
|
||||
Packet->MotorPacket.FlowerPositions[2] = 2;
|
||||
r64 NanosSinceLastSend = ((r64)Context->SystemTime_Current.NanosSinceEpoch - (r64)BLState->LastSendTime.NanosSinceEpoch);
|
||||
r64 SecondsSinceLastSend = NanosSinceLastSend / PowR32(10, 8);
|
||||
|
||||
SendOpen = SecondsSinceLastSend > 2;
|
||||
if (SendOpen)
|
||||
{
|
||||
BLState->LastSendTime = Context->SystemTime_Current;
|
||||
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;
|
||||
gs_data Msg = StructToData(&Packet, blumen_packet);
|
||||
MessageQueue_Write(&BLState->OutgoingMsgQueue, Msg);
|
||||
}
|
||||
else if (!CurrTimeInRange && LastTimeInRange)
|
||||
{
|
||||
OutputDebugString("Close\n");
|
||||
gs_data* Msg = MessageQueue_GetWrite(&BLState->OutgoingMsgQueue);
|
||||
|
||||
blumen_packet* Packet = (blumen_packet*)Msg->Memory;
|
||||
Packet->Type = PacketType_MotorState;
|
||||
Packet->MotorPacket.FlowerPositions[0] = 1;
|
||||
Packet->MotorPacket.FlowerPositions[1] = 1;
|
||||
Packet->MotorPacket.FlowerPositions[2] = 1;
|
||||
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;
|
||||
gs_data Msg = StructToData(&Packet, blumen_packet);
|
||||
MessageQueue_Write(&BLState->OutgoingMsgQueue, Msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -377,23 +390,25 @@ BlumenLumen_CustomUpdate(gs_data UserData, app_state* State, context* Context)
|
|||
// Send Status Packet
|
||||
{
|
||||
system_time LastSendTime = BLState->LastStatusUpdateTime;
|
||||
s64 NanosSinceLastSend = ((s64)Context->SystemTime_Current.NanosSinceEpoch - (s64)LastSendTime.NanosSinceEpoch);
|
||||
s64 SecondsSinceLastSend = NanosSinceLastSend * 1000000000;
|
||||
r64 NanosSinceLastSend = ((r64)Context->SystemTime_Current.NanosSinceEpoch - (r64)LastSendTime.NanosSinceEpoch);
|
||||
r64 SecondsSinceLastSend = NanosSinceLastSend / PowR32(10, 8);
|
||||
if (SecondsSinceLastSend >= STATUS_PACKET_FREQ_SECONDS)
|
||||
{
|
||||
BLState->LastStatusUpdateTime = Context->SystemTime_Current;
|
||||
gs_data* Msg = MessageQueue_GetWrite(&BLState->OutgoingMsgQueue);
|
||||
|
||||
OutputDebugString("Sending Status\n");
|
||||
|
||||
blumen_packet* Packet = (blumen_packet*)Msg->Memory;
|
||||
Packet->Type = PacketType_LumenariumStatus;
|
||||
Packet->StatusPacket.NextMotorEventType = 0;
|
||||
Packet->StatusPacket.NextEventTime = 0;
|
||||
blumen_packet Packet = {};
|
||||
Packet.Type = PacketType_LumenariumStatus;
|
||||
Packet.StatusPacket.NextMotorEventType = 0;
|
||||
Packet.StatusPacket.NextEventTime = 0;
|
||||
|
||||
animation* ActiveAnim = AnimationSystem_GetActiveAnimation(&State->AnimationSystem);
|
||||
CopyMemoryTo(ActiveAnim->Name.Str, Packet->StatusPacket.AnimFileName,
|
||||
CopyMemoryTo(ActiveAnim->Name.Str, Packet.StatusPacket.AnimFileName,
|
||||
Min(ActiveAnim->Name.Length, 32));
|
||||
Packet.StatusPacket.AnimFileName[ActiveAnim->Name.Length] = 0;
|
||||
|
||||
gs_data Msg = StructToData(&Packet, blumen_packet);
|
||||
MessageQueue_Write(&BLState->OutgoingMsgQueue, Msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,14 @@ enum bl_python_packet_type
|
|||
typedef struct motor_packet
|
||||
{
|
||||
u8 FlowerPositions[3];
|
||||
/*
|
||||
u8 Motor1Pos;
|
||||
u8 Motor2Pos;
|
||||
u8 Motor3Pos;
|
||||
*/
|
||||
u8 MotorStatus[3];
|
||||
u16 Temperature;
|
||||
|
||||
} motor_packet;
|
||||
|
||||
typedef struct microphone_packet
|
||||
|
@ -46,13 +54,15 @@ enum motor_event_type
|
|||
typedef struct status_packet
|
||||
{
|
||||
u8 NextMotorEventType;
|
||||
// u16 Padding;
|
||||
u32 NextEventTime;
|
||||
|
||||
char AnimFileName[32];
|
||||
} status_packet;
|
||||
|
||||
typedef struct blumen_packet
|
||||
{
|
||||
bl_python_packet_type Type;
|
||||
u8 Type;
|
||||
union
|
||||
{
|
||||
motor_packet MotorPacket;
|
||||
|
@ -104,9 +114,12 @@ SystemTimeIsInTimeRange(system_time SysTime, time_range Range)
|
|||
}
|
||||
|
||||
global time_range MotorOpenTimes[] = {
|
||||
{ 14, 28, 14, 29 }
|
||||
{ 17, 56, 17, 56 },
|
||||
{ 17, 58, 17, 56 },
|
||||
{ 18, 00, 18, 00 },
|
||||
|
||||
};
|
||||
global u32 MotorOpenTimesCount = 1;
|
||||
global u32 MotorOpenTimesCount = 3;
|
||||
|
||||
struct blumen_lumen_state
|
||||
{
|
||||
|
@ -131,6 +144,8 @@ struct blumen_lumen_state
|
|||
// dim the leds.
|
||||
r32 BrightnessPercent;
|
||||
system_time LastStatusUpdateTime;
|
||||
|
||||
system_time LastSendTime;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue