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