1f2d4f7b0Sopenharmony_ci/* 2f2d4f7b0Sopenharmony_ci * Copyright (c) 2020-2022 Huawei Device Co., Ltd. 3f2d4f7b0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4f2d4f7b0Sopenharmony_ci * you may not use this file except in compliance with the License. 5f2d4f7b0Sopenharmony_ci * You may obtain a copy of the License at 6f2d4f7b0Sopenharmony_ci * 7f2d4f7b0Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8f2d4f7b0Sopenharmony_ci * 9f2d4f7b0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10f2d4f7b0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11f2d4f7b0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12f2d4f7b0Sopenharmony_ci * See the License for the specific language governing permissions and 13f2d4f7b0Sopenharmony_ci * limitations under the License. 14f2d4f7b0Sopenharmony_ci */ 15f2d4f7b0Sopenharmony_ci 16f2d4f7b0Sopenharmony_ci#include "app_common.h" 17f2d4f7b0Sopenharmony_ci 18f2d4f7b0Sopenharmony_cilong long HapGetInt64(const unsigned char *buf, int32_t len) 19f2d4f7b0Sopenharmony_ci{ 20f2d4f7b0Sopenharmony_ci if (buf == NULL) { 21f2d4f7b0Sopenharmony_ci return 0; 22f2d4f7b0Sopenharmony_ci } 23f2d4f7b0Sopenharmony_ci unsigned long long value = 0; 24f2d4f7b0Sopenharmony_ci if (len != sizeof(long long)) { 25f2d4f7b0Sopenharmony_ci return 0; 26f2d4f7b0Sopenharmony_ci } 27f2d4f7b0Sopenharmony_ci while (len-- > 0) { 28f2d4f7b0Sopenharmony_ci value = (value << BYTE_BITS) | (*(buf + len)); 29f2d4f7b0Sopenharmony_ci } 30f2d4f7b0Sopenharmony_ci return (long long)value; 31f2d4f7b0Sopenharmony_ci} 32f2d4f7b0Sopenharmony_ci 33f2d4f7b0Sopenharmony_ciint32_t HapGetInt(const unsigned char *buf, int32_t len) 34f2d4f7b0Sopenharmony_ci{ 35f2d4f7b0Sopenharmony_ci uint32_t value = HapGetUnsignedInt(buf, len); 36f2d4f7b0Sopenharmony_ci return (int)value; 37f2d4f7b0Sopenharmony_ci} 38f2d4f7b0Sopenharmony_ci 39f2d4f7b0Sopenharmony_ciuint32_t HapGetUnsignedInt(const unsigned char *buf, int32_t len) 40f2d4f7b0Sopenharmony_ci{ 41f2d4f7b0Sopenharmony_ci if (buf == NULL) { 42f2d4f7b0Sopenharmony_ci return 0; 43f2d4f7b0Sopenharmony_ci } 44f2d4f7b0Sopenharmony_ci uint32_t value = 0; 45f2d4f7b0Sopenharmony_ci if (len != sizeof(int)) { 46f2d4f7b0Sopenharmony_ci return 0; 47f2d4f7b0Sopenharmony_ci } 48f2d4f7b0Sopenharmony_ci while (len-- > 0) { 49f2d4f7b0Sopenharmony_ci value = (value << BYTE_BITS) | (*(buf + len)); 50f2d4f7b0Sopenharmony_ci } 51f2d4f7b0Sopenharmony_ci return value; 52f2d4f7b0Sopenharmony_ci} 53f2d4f7b0Sopenharmony_ci 54f2d4f7b0Sopenharmony_cishort HapGetShort(const unsigned char *buf, int32_t len) 55f2d4f7b0Sopenharmony_ci{ 56f2d4f7b0Sopenharmony_ci if (buf == NULL) { 57f2d4f7b0Sopenharmony_ci return 0; 58f2d4f7b0Sopenharmony_ci } 59f2d4f7b0Sopenharmony_ci unsigned short value = 0; 60f2d4f7b0Sopenharmony_ci if (len != sizeof(short)) { 61f2d4f7b0Sopenharmony_ci return 0; 62f2d4f7b0Sopenharmony_ci } 63f2d4f7b0Sopenharmony_ci while (len-- > 0) { 64f2d4f7b0Sopenharmony_ci value = (value << BYTE_BITS) | (*(buf + len)); 65f2d4f7b0Sopenharmony_ci } 66f2d4f7b0Sopenharmony_ci return (short)value; 67f2d4f7b0Sopenharmony_ci} 68f2d4f7b0Sopenharmony_ci 69f2d4f7b0Sopenharmony_civoid HapPutInt32(unsigned char *buf, int32_t len, int32_t value) 70f2d4f7b0Sopenharmony_ci{ 71f2d4f7b0Sopenharmony_ci if (buf == NULL || len < sizeof(int)) { 72f2d4f7b0Sopenharmony_ci return; 73f2d4f7b0Sopenharmony_ci } 74f2d4f7b0Sopenharmony_ci int32_t i; 75f2d4f7b0Sopenharmony_ci uint32_t var = (unsigned int)value; 76f2d4f7b0Sopenharmony_ci for (i = 0; i < sizeof(int); i++) { 77f2d4f7b0Sopenharmony_ci buf[i] = var; 78f2d4f7b0Sopenharmony_ci var = var >> (BYTE_BITS); 79f2d4f7b0Sopenharmony_ci } 80f2d4f7b0Sopenharmony_ci return; 81f2d4f7b0Sopenharmony_ci} 82