fixed NormCmdCCMsg item parsing and iteration per issue reported by CrunchyJohnHaven
parent
fcd2554051
commit
0c4b130c7b
|
|
@ -92,6 +92,30 @@ ssize_t NormWrite(NormSocketHandle normSocket, const void* buf, size_t nbyte);
|
||||||
|
|
||||||
int NormFlush(NormSocketHandle normSocket);
|
int NormFlush(NormSocketHandle normSocket);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
// These calls _will_ be used for file/data object and message-stream delivery. (Sketching the calls out for now)
|
||||||
|
|
||||||
|
NormObject NormSendFile(NormSocketHandle normSocket,
|
||||||
|
const char* filePath,
|
||||||
|
const char* infoPtr,
|
||||||
|
ssize_t infoLen);
|
||||||
|
|
||||||
|
NormObject NormSendData(NormSocketHandle normSocket,
|
||||||
|
const char* data, // NormSocket will copy the "data" unlike NORM low-level API
|
||||||
|
ssize_t nbyte,
|
||||||
|
const char* infoPtr,
|
||||||
|
ssize_t infoLen);
|
||||||
|
|
||||||
|
// Notification events will indicate receipt of file/data objects. Are additional NormSocket API calls
|
||||||
|
// needed to manage receipt?
|
||||||
|
|
||||||
|
ssize_t NormSendMsg(NormSocketHandle normSocket, const char* data, ssize_t nbyte, bool flush);
|
||||||
|
|
||||||
|
ssize_t NormRecvMsg(NormSocketHandle normSocket, const char* data, ssize_t nbyte);
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
// NormSocket helper functions
|
// NormSocket helper functions
|
||||||
|
|
||||||
void NormSetSocketUserData(NormSocketHandle normSocket, const void* userData);
|
void NormSetSocketUserData(NormSocketHandle normSocket, const void* userData);
|
||||||
|
|
|
||||||
|
|
@ -69,12 +69,12 @@ inline UINT16 NormQuantizeLoss(double lossFraction)
|
||||||
lossFraction = MIN(lossFraction, 65535.0);
|
lossFraction = MIN(lossFraction, 65535.0);
|
||||||
return (UINT16)lossFraction;
|
return (UINT16)lossFraction;
|
||||||
} // end NormQuantizeLossFraction()
|
} // end NormQuantizeLossFraction()
|
||||||
|
|
||||||
inline double NormUnquantizeLoss(UINT16 lossQuantized)
|
inline double NormUnquantizeLoss(UINT16 lossQuantized)
|
||||||
{
|
{
|
||||||
return (((double)lossQuantized) / 65535.0);
|
return (((double)lossQuantized) / 65535.0);
|
||||||
} // end NormUnquantizeLossFraction()
|
} // end NormUnquantizeLossFraction()
|
||||||
|
|
||||||
|
|
||||||
// Extended precision Norm loss quantize/unquantize with
|
// Extended precision Norm loss quantize/unquantize with
|
||||||
// 32-bit precision (needed for low BER, high bandwidth*delay)
|
// 32-bit precision (needed for low BER, high bandwidth*delay)
|
||||||
inline UINT32 NormQuantizeLoss32(double lossFraction)
|
inline UINT32 NormQuantizeLoss32(double lossFraction)
|
||||||
|
|
|
||||||
2
protolib
2
protolib
|
|
@ -1 +1 @@
|
||||||
Subproject commit a28606945f6b507760548b242b6706b51b5b69d3
|
Subproject commit e5ac157eb61e991c74acfe39e2febe8c09e187dc
|
||||||
|
|
@ -118,7 +118,7 @@ bool NormCmdCCMsg::GetCCNode(NormNodeId nodeId,
|
||||||
UINT16 cmdLength = length/4;
|
UINT16 cmdLength = length/4;
|
||||||
UINT16 offset = header_length/4;
|
UINT16 offset = header_length/4;
|
||||||
nodeId = htonl(nodeId);
|
nodeId = htonl(nodeId);
|
||||||
while (offset < cmdLength)
|
while (offset + (CC_ITEM_SIZE/4) <= cmdLength)
|
||||||
{
|
{
|
||||||
if (nodeId == buffer[offset])
|
if (nodeId == buffer[offset])
|
||||||
{
|
{
|
||||||
|
|
@ -134,7 +134,7 @@ bool NormCmdCCMsg::GetCCNode(NormNodeId nodeId,
|
||||||
} // end NormCmdCCMsg::GetCCNode()
|
} // end NormCmdCCMsg::GetCCNode()
|
||||||
|
|
||||||
NormCmdCCMsg::Iterator::Iterator(const NormCmdCCMsg& msg)
|
NormCmdCCMsg::Iterator::Iterator(const NormCmdCCMsg& msg)
|
||||||
: cc_cmd(msg), offset(0)
|
: cc_cmd(msg), offset(msg.GetHeaderLength())
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -145,7 +145,7 @@ bool NormCmdCCMsg::Iterator::GetNextNode(NormNodeId& nodeId,
|
||||||
UINT16& rate)
|
UINT16& rate)
|
||||||
{
|
{
|
||||||
if ((offset+CC_ITEM_SIZE) > cc_cmd.GetLength()) return false;
|
if ((offset+CC_ITEM_SIZE) > cc_cmd.GetLength()) return false;
|
||||||
const UINT32* ptr = cc_cmd.buffer + cc_cmd.header_length/4;
|
const UINT32* ptr = cc_cmd.buffer + offset/4;
|
||||||
nodeId = ntohl(ptr[offset/4]);
|
nodeId = ntohl(ptr[offset/4]);
|
||||||
flags = ((UINT8*)ptr)[offset+CC_FLAGS_OFFSET];
|
flags = ((UINT8*)ptr)[offset+CC_FLAGS_OFFSET];
|
||||||
rtt = ((UINT8*)ptr)[offset+CC_RTT_OFFSET];
|
rtt = ((UINT8*)ptr)[offset+CC_RTT_OFFSET];
|
||||||
|
|
@ -154,6 +154,7 @@ bool NormCmdCCMsg::Iterator::GetNextNode(NormNodeId& nodeId,
|
||||||
return true;
|
return true;
|
||||||
} // end NormCmdCCMsg::Iterator::GetNextNode()
|
} // end NormCmdCCMsg::Iterator::GetNextNode()
|
||||||
|
|
||||||
|
|
||||||
NormRepairRequest::NormRepairRequest()
|
NormRepairRequest::NormRepairRequest()
|
||||||
: form(INVALID), flags(0), length(0), buffer(NULL), buffer_len(0)
|
: form(INVALID), flags(0), length(0), buffer(NULL), buffer_len(0)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue