command_packet.cc revision 88e0b6b68dd5b95ec1f3310fe815286626552109
1336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust/*
2336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust * Copyright 2015 The Android Open Source Project
30961f46d8f2cdafb754ba0a44ab21e99983568d0Cédric Beust *
40961f46d8f2cdafb754ba0a44ab21e99983568d0Cédric Beust * Licensed under the Apache License, Version 2.0 (the "License");
50961f46d8f2cdafb754ba0a44ab21e99983568d0Cédric Beust * you may not use this file except in compliance with the License.
60961f46d8f2cdafb754ba0a44ab21e99983568d0Cédric Beust * You may obtain a copy of the License at
70961f46d8f2cdafb754ba0a44ab21e99983568d0Cédric Beust *
80961f46d8f2cdafb754ba0a44ab21e99983568d0Cédric Beust *      http://www.apache.org/licenses/LICENSE-2.0
90961f46d8f2cdafb754ba0a44ab21e99983568d0Cédric Beust *
100961f46d8f2cdafb754ba0a44ab21e99983568d0Cédric Beust * Unless required by applicable law or agreed to in writing, software
11dd84c4f1673772d6b1febb72add6a2ae40f4e4ccCédric Beust * distributed under the License is distributed on an "AS IS" BASIS,
12dd84c4f1673772d6b1febb72add6a2ae40f4e4ccCédric Beust * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13dd84c4f1673772d6b1febb72add6a2ae40f4e4ccCédric Beust * See the License for the specific language governing permissions and
146c06a0ceec7a82981b0e1b70de74439d0afeb25eCédric Beust * limitations under the License.
152fc90467f1388cdc683d918d82bb34854336a8c5Cédric Beust */
16dd84c4f1673772d6b1febb72add6a2ae40f4e4ccCédric Beust
170f6db64c011bc71dcdb432d7d27730b04f5ef2c1Cédric Beust#define LOG_TAG "command_packet"
18dd84c4f1673772d6b1febb72add6a2ae40f4e4ccCédric Beust
19dd84c4f1673772d6b1febb72add6a2ae40f4e4ccCédric Beust#include "command_packet.h"
20dd84c4f1673772d6b1febb72add6a2ae40f4e4ccCédric Beust
21336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust#include "hci/include/hci_hal.h"
22336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust#include "osi/include/log.h"
23336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust#include "stack/include/hcidefs.h"
24336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust
250f7e671c94aeedee2fbc796b3318d44b0297b6cdnullinusing std::vector;
26336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust
27336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beustnamespace test_vendor_lib {
28336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust
29336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric BeustCommandPacket::CommandPacket(vector<uint8_t> header)
300f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin    : Packet(DATA_TYPE_COMMAND, std::move(header)) {}
310f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin
32336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric BeustCommandPacket::CommandPacket(uint16_t opcode)
330f6db64c011bc71dcdb432d7d27730b04f5ef2c1Cédric Beust    : Packet(DATA_TYPE_COMMAND, {static_cast<uint8_t>(opcode),
340f6db64c011bc71dcdb432d7d27730b04f5ef2c1Cédric Beust                                 static_cast<uint8_t>(opcode >> 8)}) {}
35336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust
36336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric BeustCommandPacket::CommandPacket(vector<uint8_t> header, vector<uint8_t> payload)
37336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust    : Packet(DATA_TYPE_COMMAND, std::move(header)) {
38336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust  AddPayloadOctets(payload.size(), std::move(payload));
392fc90467f1388cdc683d918d82bb34854336a8c5Cédric Beust}
40d65cbf8fcbda0a9a2ace0044d4b3546a199aab37Cédric Beust
410f7e671c94aeedee2fbc796b3318d44b0297b6cdnullinuint16_t CommandPacket::GetOpcode() const {
420f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin  return 0 | (GetHeader()[0] | (GetHeader()[1] << 8));
436c06a0ceec7a82981b0e1b70de74439d0afeb25eCédric Beust}
440f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin
45fd841531a5646fbdb451220d2c1224d87d81f1b3Cédric Beustuint8_t CommandPacket::GetOGF() const { return HCI_OGF(GetOpcode()); }
46fd841531a5646fbdb451220d2c1224d87d81f1b3Cédric Beust
470f7e671c94aeedee2fbc796b3318d44b0297b6cdnullinuint16_t CommandPacket::GetOCF() const { return HCI_OCF(GetOpcode()); }
4888718b42c53c78082beacf652819115c5ea2ec18Cédric Beust
4988718b42c53c78082beacf652819115c5ea2ec18Cédric Beust}  // namespace test_vendor_lib
50fd841531a5646fbdb451220d2c1224d87d81f1b3Cédric Beust