Home | History | Annotate | Download | only in vehicle_network_service
      1 /*
      2  * Copyright (C) 2016 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #ifndef CAR_VEHICLE_HAL_PROPERTY_UTIL_H_
     18 #define CAR_VEHICLE_HAL_PROPERTY_UTIL_H_
     19 
     20 #include <stdint.h>
     21 #include <sys/types.h>
     22 #include <inttypes.h>
     23 
     24 #include <hardware/hardware.h>
     25 #include <hardware/vehicle.h>
     26 
     27 #include <utils/String8.h>
     28 
     29 #include <IVehicleNetwork.h>
     30 
     31 namespace android {
     32 
     33 class VechilePropertyUtil {
     34 public:
     35     static void dumpProperty(String8& msg, const vehicle_prop_config_t& config) {
     36         msg.appendFormat("property 0x%x, access:0x%x, change_mode:0x%x, value_type:0x%x",
     37                 config.prop, config.access, config.change_mode, config.value_type);
     38         msg.appendFormat(",permission:0x%x, zones:0x%x, conflg_flag:0x%x, fsmin:%f, fsmax:%f",
     39                 config.permission_model, config.vehicle_zone_flags, config.config_flags,
     40                 config.min_sample_rate, config.max_sample_rate);
     41         switch (config.value_type) {
     42             case VEHICLE_VALUE_TYPE_FLOAT:
     43             case VEHICLE_VALUE_TYPE_FLOAT_VEC2:
     44             case VEHICLE_VALUE_TYPE_FLOAT_VEC3:
     45             case VEHICLE_VALUE_TYPE_FLOAT_VEC4: {
     46                 msg.appendFormat(",v min:%f, v max:%f\n", config.float_min_value,
     47                         config.float_max_value);
     48             } break;
     49             case VEHICLE_VALUE_TYPE_ZONED_FLOAT:
     50             case VEHICLE_VALUE_TYPE_ZONED_FLOAT_VEC2:
     51             case VEHICLE_VALUE_TYPE_ZONED_FLOAT_VEC3:
     52             case VEHICLE_VALUE_TYPE_ZONED_FLOAT_VEC4: {
     53                 if (config.float_min_values == NULL) {
     54                     if (config.float_max_values == NULL) {
     55                         msg.appendFormat(",v min:%f, v max:%f\n", config.float_min_value,
     56                                 config.float_max_value);
     57                     } else {
     58                         msg.appendFormat(", ERROR: float_max_values not NULL while min is NULL");
     59 
     60                     }
     61                 } else {
     62                     if (config.float_max_values == NULL) {
     63                         msg.appendFormat(", ERROR: float_min_values not NULL while max is NULL");
     64                     } else {
     65                         int n = VehicleNetworkUtil::countNumberOfZones(
     66                                 config.vehicle_zone_flags);
     67                         msg.appendFormat(", v min:");
     68                         for (int i = 0; i < n; i++) {
     69                             msg.appendFormat("%f,", config.float_min_values[i]);
     70                         }
     71                         msg.appendFormat(", v max:");
     72                         for (int i = 0; i < n; i++) {
     73                             msg.appendFormat("%f,", config.float_max_values[i]);
     74                         }
     75                     }
     76                 }
     77             } break;
     78             case VEHICLE_VALUE_TYPE_INT64: {
     79                 msg.appendFormat(",v min:%" PRId64 " max:%" PRId64 "\n", config.int64_min_value,
     80                         config.int64_max_value);
     81             } break;
     82             case VEHICLE_VALUE_TYPE_INT32:
     83             case VEHICLE_VALUE_TYPE_INT32_VEC2:
     84             case VEHICLE_VALUE_TYPE_INT32_VEC3:
     85             case VEHICLE_VALUE_TYPE_INT32_VEC4: {
     86                 msg.appendFormat(",v min:%d, v max:%d\n", config.int32_min_value,
     87                         config.int32_max_value);
     88             } break;
     89             case VEHICLE_VALUE_TYPE_ZONED_INT32:
     90             case VEHICLE_VALUE_TYPE_ZONED_INT32_VEC2:
     91             case VEHICLE_VALUE_TYPE_ZONED_INT32_VEC3:
     92             case VEHICLE_VALUE_TYPE_ZONED_INT32_VEC4: {
     93                 if (config.int32_min_values == NULL) {
     94                     if (config.int32_max_values == NULL) {
     95                         msg.appendFormat(",v min:%d, v max:%d\n", config.int32_min_value,
     96                                 config.int32_max_value);
     97                     } else {
     98                         msg.appendFormat(", ERROR: int32_max_values not NULL while min is NULL");
     99 
    100                     }
    101                 } else {
    102                     if (config.int32_max_values == NULL) {
    103                         msg.appendFormat(", ERROR: int32_min_values not NULL while max is NULL");
    104                     } else {
    105                         int n = VehicleNetworkUtil::countNumberOfZones(
    106                                 config.vehicle_zone_flags);
    107                         msg.appendFormat(", v min:");
    108                         for (int i = 0; i < n; i++) {
    109                             msg.appendFormat("%d,", config.int32_min_values[i]);
    110                         }
    111                         msg.appendFormat(", v max:");
    112                         for (int i = 0; i < n; i++) {
    113                             msg.appendFormat("%d,", config.int32_max_values[i]);
    114                         }
    115                     }
    116                 }
    117             } break;
    118             default:
    119                 msg.appendFormat("\n");
    120         }
    121     }
    122 };
    123 
    124 
    125 };
    126 
    127 #endif /* CAR_VEHICLE_HAL_PROPERTY_UTIL_H_ */
    128