зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1221326 - use Endian.h more widely in bluetooth code; r=btian
This commit is contained in:
Родитель
7397339686
Коммит
555ffcc8b5
|
@ -502,8 +502,7 @@ BluetoothMapSmsManager::ReplyToConnect()
|
||||||
|
|
||||||
req[3] = 0x10; // version=1.0
|
req[3] = 0x10; // version=1.0
|
||||||
req[4] = 0x00; // flag=0x00
|
req[4] = 0x00; // flag=0x00
|
||||||
req[5] = BluetoothMapSmsManager::MAX_PACKET_LENGTH >> 8;
|
BigEndian::writeUint16(&req[5], BluetoothMapSmsManager::MAX_PACKET_LENGTH);
|
||||||
req[6] = (uint8_t)BluetoothMapSmsManager::MAX_PACKET_LENGTH;
|
|
||||||
|
|
||||||
// Section 6.4 "Establishing an OBEX Session", MapSms 1.2
|
// Section 6.4 "Establishing an OBEX Session", MapSms 1.2
|
||||||
// Headers: [Who:16][Connection ID]
|
// Headers: [Who:16][Connection ID]
|
||||||
|
|
|
@ -866,8 +866,7 @@ BluetoothOppManager::ComposePacket(uint8_t aOpCode, UnixSocketBuffer* aMessage)
|
||||||
// [opcode:1][length:2][Headers:var]
|
// [opcode:1][length:2][Headers:var]
|
||||||
frameHeaderLength = 3;
|
frameHeaderLength = 3;
|
||||||
|
|
||||||
mPacketLength = ((static_cast<int>(data[1]) << 8) | data[2]) -
|
mPacketLength = BigEndian::readUint16(&data[1]) - frameHeaderLength;
|
||||||
frameHeaderLength;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A PUT request from remote devices may be divided into multiple parts.
|
* A PUT request from remote devices may be divided into multiple parts.
|
||||||
|
@ -1119,7 +1118,7 @@ BluetoothOppManager::ClientDataHandler(UnixSocketBuffer* aMessage)
|
||||||
// Keep remote information
|
// Keep remote information
|
||||||
mRemoteObexVersion = data[3];
|
mRemoteObexVersion = data[3];
|
||||||
mRemoteConnectionFlags = data[4];
|
mRemoteConnectionFlags = data[4];
|
||||||
mRemoteMaxPacketLength = ((static_cast<int>(data[5]) << 8) | data[6]);
|
mRemoteMaxPacketLength = BigEndian::readUint16(&data[5]);
|
||||||
|
|
||||||
// The length of file name exceeds maximum length.
|
// The length of file name exceeds maximum length.
|
||||||
int fileNameByteLen = (mFileName.Length() + 1) * 2;
|
int fileNameByteLen = (mFileName.Length() + 1) * 2;
|
||||||
|
|
|
@ -242,7 +242,7 @@ BluetoothPbapManager::ReceiveSocketData(BluetoothSocket* aSocket,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save the max packet length from remote information
|
// Save the max packet length from remote information
|
||||||
mRemoteMaxPacketLength = ((static_cast<int>(data[5]) << 8) | data[6]);
|
mRemoteMaxPacketLength = BigEndian::readUint16(&data[5]);
|
||||||
|
|
||||||
if (mRemoteMaxPacketLength < kObexLeastMaxSize) {
|
if (mRemoteMaxPacketLength < kObexLeastMaxSize) {
|
||||||
BT_LOGR("Remote maximum packet length %d is smaller than %d bytes",
|
BT_LOGR("Remote maximum packet length %d is smaller than %d bytes",
|
||||||
|
|
|
@ -842,8 +842,7 @@ BluetoothOppManager::ComposePacket(uint8_t aOpCode, UnixSocketBuffer* aMessage)
|
||||||
// [opcode:1][length:2][Headers:var]
|
// [opcode:1][length:2][Headers:var]
|
||||||
frameHeaderLength = 3;
|
frameHeaderLength = 3;
|
||||||
|
|
||||||
mPacketLength = ((static_cast<int>(data[1]) << 8) | data[2]) -
|
mPacketLength = BigEndian::readUint16(&data[1]) - frameHeaderLength;
|
||||||
frameHeaderLength;
|
|
||||||
/**
|
/**
|
||||||
* A PUT request from remote devices may be divided into multiple parts.
|
* A PUT request from remote devices may be divided into multiple parts.
|
||||||
* In other words, one request may need to be received multiple times,
|
* In other words, one request may need to be received multiple times,
|
||||||
|
@ -1094,7 +1093,7 @@ BluetoothOppManager::ClientDataHandler(UnixSocketBuffer* aMessage)
|
||||||
// Keep remote information
|
// Keep remote information
|
||||||
mRemoteObexVersion = data[3];
|
mRemoteObexVersion = data[3];
|
||||||
mRemoteConnectionFlags = data[4];
|
mRemoteConnectionFlags = data[4];
|
||||||
mRemoteMaxPacketLength = (static_cast<int>(data[5]) << 8) | data[6];
|
mRemoteMaxPacketLength = BigEndian::readUint16(&data[5]);
|
||||||
|
|
||||||
// The length of file name exceeds maximum length.
|
// The length of file name exceeds maximum length.
|
||||||
int fileNameByteLen = (mFileName.Length() + 1) * 2;
|
int fileNameByteLen = (mFileName.Length() + 1) * 2;
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include "mozilla/Compiler.h"
|
#include "mozilla/Compiler.h"
|
||||||
|
#include "mozilla/Endian.h"
|
||||||
#include "mozilla/Observer.h"
|
#include "mozilla/Observer.h"
|
||||||
#include "nsAutoPtr.h"
|
#include "nsAutoPtr.h"
|
||||||
#include "nsPrintfCString.h"
|
#include "nsPrintfCString.h"
|
||||||
|
@ -496,14 +497,12 @@ struct BluetoothAddress {
|
||||||
|
|
||||||
uint16_t GetNAP() const
|
uint16_t GetNAP() const
|
||||||
{
|
{
|
||||||
return (static_cast<uint16_t>(mAddr[4])) |
|
return LittleEndian::readUint16(&mAddr[4]);
|
||||||
(static_cast<uint16_t>(mAddr[5]) << 8);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetNAP(uint16_t aNAP)
|
void SetNAP(uint16_t aNAP)
|
||||||
{
|
{
|
||||||
mAddr[4] = aNAP;
|
LittleEndian::writeUint16(&mAddr[4], aNAP);
|
||||||
mAddr[5] = aNAP >> 8;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -635,10 +634,7 @@ struct BluetoothUuid {
|
||||||
|
|
||||||
void SetUuid32(uint32_t aUuid32)
|
void SetUuid32(uint32_t aUuid32)
|
||||||
{
|
{
|
||||||
mUuid[0] = static_cast<uint8_t>(0xff & (aUuid32 >> 24));
|
BigEndian::writeUint32(&mUuid[0], aUuid32);
|
||||||
mUuid[1] = static_cast<uint8_t>(0xff & (aUuid32 >> 16));
|
|
||||||
mUuid[2] = static_cast<uint8_t>(0xff & (aUuid32 >> 8));
|
|
||||||
mUuid[3] = static_cast<uint8_t>(0xff & (aUuid32));
|
|
||||||
mUuid[4] = 0x00;
|
mUuid[4] = 0x00;
|
||||||
mUuid[5] = 0x00;
|
mUuid[5] = 0x00;
|
||||||
mUuid[6] = 0x10;
|
mUuid[6] = 0x10;
|
||||||
|
@ -655,10 +651,7 @@ struct BluetoothUuid {
|
||||||
|
|
||||||
uint32_t GetUuid32() const
|
uint32_t GetUuid32() const
|
||||||
{
|
{
|
||||||
return (static_cast<uint32_t>(mUuid[0]) << 24) |
|
return BigEndian::readUint32(&mUuid[0]);
|
||||||
(static_cast<uint32_t>(mUuid[1]) << 16) |
|
|
||||||
(static_cast<uint32_t>(mUuid[2]) << 8) |
|
|
||||||
(static_cast<uint32_t>(mUuid[3]));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetUuid16(uint16_t aUuid16)
|
void SetUuid16(uint16_t aUuid16)
|
||||||
|
@ -668,8 +661,7 @@ struct BluetoothUuid {
|
||||||
|
|
||||||
uint16_t GetUuid16() const
|
uint16_t GetUuid16() const
|
||||||
{
|
{
|
||||||
return (static_cast<uint16_t>(mUuid[2]) << 8) |
|
return BigEndian::readUint16(&mUuid[2]);
|
||||||
(static_cast<uint16_t>(mUuid[3]));
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,7 @@ AppendHeader(uint8_t aHeaderId, uint8_t* aRetBuf, int aBufferSize,
|
||||||
int writtenLength = (headerLength < aBufferSize) ? headerLength : aBufferSize;
|
int writtenLength = (headerLength < aBufferSize) ? headerLength : aBufferSize;
|
||||||
|
|
||||||
aRetBuf[0] = aHeaderId;
|
aRetBuf[0] = aHeaderId;
|
||||||
aRetBuf[1] = (headerLength & 0xFF00) >> 8;
|
BigEndian::writeUint16(&aRetBuf[1], headerLength);
|
||||||
aRetBuf[2] = headerLength & 0x00FF;
|
|
||||||
memcpy(&aRetBuf[3], aData, writtenLength - 3);
|
memcpy(&aRetBuf[3], aData, writtenLength - 3);
|
||||||
|
|
||||||
return writtenLength;
|
return writtenLength;
|
||||||
|
@ -37,10 +36,7 @@ int
|
||||||
AppendHeader(uint8_t aHeaderId, uint8_t* aRetBuf, int aValue)
|
AppendHeader(uint8_t aHeaderId, uint8_t* aRetBuf, int aValue)
|
||||||
{
|
{
|
||||||
aRetBuf[0] = aHeaderId;
|
aRetBuf[0] = aHeaderId;
|
||||||
aRetBuf[1] = (aValue & 0xFF000000) >> 24;
|
BigEndian::writeInt32(&aRetBuf[1], aValue);
|
||||||
aRetBuf[2] = (aValue & 0x00FF0000) >> 16;
|
|
||||||
aRetBuf[3] = (aValue & 0x0000FF00) >> 8;
|
|
||||||
aRetBuf[4] = aValue & 0x000000FF;
|
|
||||||
|
|
||||||
return 5;
|
return 5;
|
||||||
}
|
}
|
||||||
|
@ -135,8 +131,7 @@ void
|
||||||
SetObexPacketInfo(uint8_t* aRetBuf, uint8_t aOpcode, int aPacketLength)
|
SetObexPacketInfo(uint8_t* aRetBuf, uint8_t aOpcode, int aPacketLength)
|
||||||
{
|
{
|
||||||
aRetBuf[0] = aOpcode;
|
aRetBuf[0] = aOpcode;
|
||||||
aRetBuf[1] = (aPacketLength & 0xFF00) >> 8;
|
BigEndian::writeUint16(&aRetBuf[1], aPacketLength);
|
||||||
aRetBuf[2] = aPacketLength & 0x00FF;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -150,7 +145,6 @@ ParseHeaders(const uint8_t* aHeaderStart,
|
||||||
ObexHeaderId headerId = (ObexHeaderId)*ptr++;
|
ObexHeaderId headerId = (ObexHeaderId)*ptr++;
|
||||||
|
|
||||||
uint16_t contentLength = 0;
|
uint16_t contentLength = 0;
|
||||||
uint8_t highByte, lowByte;
|
|
||||||
|
|
||||||
// Defined in 2.1 OBEX Headers, IrOBEX 1.2
|
// Defined in 2.1 OBEX Headers, IrOBEX 1.2
|
||||||
switch (headerId >> 6)
|
switch (headerId >> 6)
|
||||||
|
@ -160,9 +154,8 @@ ParseHeaders(const uint8_t* aHeaderStart,
|
||||||
// unsigned integer.
|
// unsigned integer.
|
||||||
case 0x01:
|
case 0x01:
|
||||||
// byte sequence, length prefixed with 2 byte unsigned integer.
|
// byte sequence, length prefixed with 2 byte unsigned integer.
|
||||||
highByte = *ptr++;
|
contentLength = BigEndian::readUint16(ptr) - 3;
|
||||||
lowByte = *ptr++;
|
ptr += 2;
|
||||||
contentLength = (((uint16_t)highByte << 8) | lowByte) - 3;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x02:
|
case 0x02:
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#define mozilla_dom_bluetooth_ObexBase_h
|
#define mozilla_dom_bluetooth_ObexBase_h
|
||||||
|
|
||||||
#include "BluetoothCommon.h"
|
#include "BluetoothCommon.h"
|
||||||
|
#include "mozilla/Endian.h"
|
||||||
#include "nsAutoPtr.h"
|
#include "nsAutoPtr.h"
|
||||||
#include "nsTArray.h"
|
#include "nsTArray.h"
|
||||||
|
|
||||||
|
@ -178,7 +179,7 @@ public:
|
||||||
uint8_t* ptr = mHeaders[i]->mData.get();
|
uint8_t* ptr = mHeaders[i]->mData.get();
|
||||||
|
|
||||||
for (int j = 0; j < nameLength; ++j) {
|
for (int j = 0; j < nameLength; ++j) {
|
||||||
char16_t c = ((((uint32_t)ptr[j * 2]) << 8) | ptr[j * 2 + 1]);
|
char16_t c = BigEndian::readUint16(&ptr[j * 2]);
|
||||||
aRetName += c;
|
aRetName += c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,10 +212,7 @@ public:
|
||||||
for (int i = 0; i < length; ++i) {
|
for (int i = 0; i < length; ++i) {
|
||||||
if (mHeaders[i]->mId == ObexHeaderId::Length) {
|
if (mHeaders[i]->mId == ObexHeaderId::Length) {
|
||||||
uint8_t* ptr = mHeaders[i]->mData.get();
|
uint8_t* ptr = mHeaders[i]->mData.get();
|
||||||
*aRetLength = ((uint32_t)ptr[0] << 24) |
|
*aRetLength = BigEndian::readUint32(&ptr[0]);
|
||||||
((uint32_t)ptr[1] << 16) |
|
|
||||||
((uint32_t)ptr[2] << 8) |
|
|
||||||
((uint32_t)ptr[3]);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче