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