New HCP protocol implementation

HCP protocol implementation now in hcp_tiny.c/hcp_tiny.h
Removed old hcp folder
Using  FPC_BEP_RESULT_ codes only

Change-Id: I82ba7fdfbcc6aa01889b81974d4003def3338e65
This commit is contained in:
Andrey Perminov 2020-05-05 17:54:16 -07:00
parent 74ac21c709
commit 10e32cc38d
292 changed files with 1161 additions and 26856 deletions

View File

@ -2,7 +2,7 @@
"configurations": [ "configurations": [
{ {
"name": "Linux", "name": "Linux",
"defines": ["NRF52840_XXAA", "BOARD_PCA10056"], "defines": ["NRF52840_XXAA", "BOARD_PCA10056", "BMLITE_USE_CALLBACK"],
"cStandard": "c11", "cStandard": "c11",
"cppStandard": "c++17", "cppStandard": "c++17",
"intelliSenseMode": "${default}", "intelliSenseMode": "${default}",
@ -20,7 +20,6 @@
"/usr/arm-none-eabi/include/c++/7.3.1/arm-none-eabi", "/usr/arm-none-eabi/include/c++/7.3.1/arm-none-eabi",
"/usr/arm-none-eabi/include/c++/7.3.1/backward", "/usr/arm-none-eabi/include/c++/7.3.1/backward",
"${workspaceFolder}/BMLite_example/inc", "${workspaceFolder}/BMLite_example/inc",
"${workspaceFolder}/hcp/inc",
"${workspaceFolder}/HAL_Driver/CMSIS/Include", "${workspaceFolder}/HAL_Driver/CMSIS/Include",
"${workspaceFolder}/HAL_Driver/inc", "${workspaceFolder}/HAL_Driver/inc",
"${workspaceFolder}/HAL_Driver/sdk", "${workspaceFolder}/HAL_Driver/sdk",

3
.vscode/tasks.json vendored
View File

@ -13,7 +13,8 @@
}, },
"problemMatcher": { "problemMatcher": {
"base": "$gcc", "base": "$gcc",
"fileLocation": ["relative", "${workspaceFolder}/BMLite_example", "absolute"] // "fileLocation": ["absolute", "${workspaceFolder}/MBLite_exapmle"]
"fileLocation": ["relative", "${workspaceFolder}/BMLite_example"]
}, },
"group": { "group": {
"kind": "build", "kind": "build",

View File

@ -45,6 +45,9 @@ CFLAGS +=\
-mthumb \ -mthumb \
-g \ -g \
CFLAGS +=\
-DBMLITE_USE_CALLBACK
#-Og\ #-Og\
# -g3\ # -g3\
@ -69,8 +72,7 @@ PATH_INC += inc
C_INC = $(addprefix -I,$(PATH_INC)) C_INC = $(addprefix -I,$(PATH_INC))
# Include HCP # Include HAL
include $(HCP_PATH)/hcp.mk
include $(MCUHAL_PATH)/nordic.mk include $(MCUHAL_PATH)/nordic.mk
# Object files and search paths # Object files and search paths

View File

@ -1,250 +0,0 @@
/*
* Copyright (c) 2020 Fingerprint Cards AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef BEP_HOST_IF_H
#define BEP_HOST_IF_H
/**
* @file bep_host_if.h
* @brief BEP Host Interface API
*/
#include <stdint.h>
#include <stdbool.h>
#include "fpc_bep_types.h"
#include "fpc_com_chain.h"
#define REMOVE_ID_ALL_TEMPLATES 0U
typedef enum {
BMLITE_ERROR_OK = 0,
BMLITE_ERROR_CAPTURE,
BMLITE_ERROR_CAPTURE_START,
BMLITE_ERROR_ENROLL_START,
BMLITE_ERROR_ENROLL_ADD,
BMLITE_ERROR_ENROLL_FINISH,
BMLITE_ERROR_WRONG_ANSWER,
BMLITE_ERROR_FINGER_WAIT,
BMLITE_ERROR_IDENTYFY,
BMLITE_ERROR_TEMPLATE_SAVE,
BMLITE_ERROR_TEMPLATE_DELETE,
BMLITE_ERROR_TEMPLATE_COUNT,
BMLITE_ERROR_TEMPLATE_GETIDS,
BMLITE_ERROR_IMAGE_EXTRACT,
BMLITE_ERROR_IMAGE_GETSIZE,
BMLITE_ERROR_IMAGE_GET,
BMLITE_ERROR_GETVERSION,
BMLITE_ERROR_SW_RESET,
BMLITE_ERROR_CALIBRATE,
BMLITE_ERROR_CALIBRATE_DELETE,
BMLITE_ERROR_SEND_CMD
} bmlite_error_t;
/**
* @brief Error Callback function
*
* @param[in] Callback Error Code
* @param[in] BEP result code
*/
void bmlite_on_error(bmlite_error_t error, int32_t value);
/**
* @brief Starting Capture Callback function
*/
void bmlite_on_start_capture();
/**
* @brief Finishing Capture Callback function
*/
void bmlite_on_finish_capture();
/**
* @brief Starting Enroll Callback function
*/
void bmlite_on_start_enroll();
/**
* @brief Finishing Enroll Callback function
*/
void bmlite_on_finish_enroll();
/**
* @brief Starting Capture for Enroll Callback function
*/
void bmlite_on_start_enrollcapture();
/**
* @brief Finishing Capture for Enroll Callback function
*/
void bmlite_on_finish_enrollcapture();
/**
* @brief Starting Identify Callback function
*/
void bmlite_on_identify_start();
/**
* @brief Finishing Identify Callback function
*/
void bmlite_on_identify_finish();
/**
* @brief Sends HCP commands for capturing an image in Bio MCU
*
* @param[in] chain HCP com chain
* @param[in] timeout Timeout in ms
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_capture(fpc_com_chain_t *chain, uint16_t timeout);
/**
* @brief Sends HCP commands for enrolling a finger in Bio MCU
*
* @param[in] chain HCP com chain
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_enroll_finger(fpc_com_chain_t *chain);
/**
* @brief Sends HCP commands for identifying a finger in Bio MCU
*
* @param[in] chain HCP com chain
* @param[out] template_id Template id that was identified (only valid if match is true)
* @param[out] match True if match
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_identify_finger(fpc_com_chain_t *chain, uint16_t *template_id, bool *match);
/**
* @brief Sends HCP commands for saving template of an enrolled finger in Bio MCU
*
* @param[in] chain HCP com chain
* @param[in] template_id Template id to save
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_save_template(fpc_com_chain_t *chain, uint16_t template_id);
/**
* @brief Remove template(s) stored
*
* @param[in] chain HCP com chain
* @param[in] template_id template id to remove, if =REMOVE_ID_ALL_TEMPLATES removes all templates
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_delete_template(fpc_com_chain_t *chain, uint16_t template_id);
/**
* @brief Gets all template ids from Bio MCU
*
* @param[in] chain HCP com chain
* @param[out] template_ids Should be allocated by the caller for storing template ids and should
* have capacity to hold bio_get_template_count
* @param[in] nof_templates This should be acquired using bio_get_template_count
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_get_template_ids(fpc_com_chain_t *chain, uint16_t *template_ids,
uint32_t nof_templates);
/**
* @brief Get the number of templates in Bio MCU
*
* @param[in] chain HCP com chain
* @param[out] template_count
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_get_template_count(fpc_com_chain_t *chain, uint32_t *template_count);
/**
* @brief Sends HCP commands for extracting a template from a previously capture image in Bio MCU
*
* @param[in] chain HCP com chain
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_image_extract(fpc_com_chain_t *chain);
/**
* @brief Sends HCP commands for getting the image size of a previously capture image in Bio MCU
*
* @param[in] chain HCP com chain
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_image_get_size(fpc_com_chain_t *chain, uint32_t *size);
/**
* @brief Sends HCP commands for getting the image data of a previously capture image in Bio MCU
*
* @param[in] chain HCP com chain
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_image_get(fpc_com_chain_t *chain, uint8_t *data, uint32_t size);
/**
* @brief Sends HCP commands for fetching the version of the Bio MCU FW
*
* @param[in] chain HCP com chain
* @param[out] version Version string buffer
* @param[out] len Length of version string buffer
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_version(fpc_com_chain_t *chain, char *version, int len);
/**
* @brief Sends HCP commands for resetting the Bio MCU
*
* @param[in] chain HCP com chain
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_reset(fpc_com_chain_t *chain);
/**
* @brief Sends HCP commands for calibrating the sensor in the Bio MCU
*
* @param[in] chain HCP com chain
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_sensor_calibrate(fpc_com_chain_t *chain);
/**
* @brief Sends HCP commands for removing the sensor calibration in the Bio MCU
*
* @param[in] chain HCP com chain
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_sensor_calibrate_remove(fpc_com_chain_t *chain);
/**
* @brief Sends HCP commands for setting the sensor in sleep and waiting for finger in the Bio MCU
*
* @param[in] chain HCP com chain
* @param[in] timeout Timeout in ms
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_sensor_wait_for_finger(fpc_com_chain_t *chain, uint16_t timeout);
/**
* @brief Sends HCP commands that returns when finger is not on the sensor in the Bio MCU
*
* @param[in] chain HCP com chain
* @param[in] timeout Timeout in ms
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_sensor_wait_finger_not_present(fpc_com_chain_t *chain, uint16_t timeout);
#endif /* BEP_HOST_IF_H */

View File

@ -0,0 +1,347 @@
#ifndef BMLITE_IF_H
#define BMLITE_IF_H
#include "hcp_tiny.h"
#include "bmlite_if_callbacks.h"
/**
* @brief Build and send command to FPC BM-Lite and receive answer
*
* @param[in] chain - HCP com chain
* @param[in] cmd - BM-Lite command
* @param[in] arg_type - Argument without parameters
* set to ARG_NONE if the command has no argument
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bmlite_send_cmd(HCP_comm_t *chain, uint16_t cmd, uint16_t arg_type);
/**
* @brief Build and send command with additiona argument with parameters
*
* @param[in] chain - HCP com chain
* @param[in] cmd - BM-Lite command
* @param[in] arg1_type - argument 1 without parameters
* set to ARG_NONE if the command has no argument without paramener
* @param[in] arg2_type - argument 2
* @param[in] arg2_data - data pointer for argument 2
* set to 0 if argument 2 has no parameter
* @param[in] arg2_length - length of data for argument 2
* set to 0 if argument 2 has no parameter
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bmlite_send_cmd_arg(HCP_comm_t *chain, uint16_t cmd, uint16_t arg1_type, uint16_t arg2_type, void *arg2_data, uint16_t arg2_length);
/**
* @brief Wait for finger present on sensor"
*
* @param[in] chain - HCP com chain
* @param[in] timeout - timeout (msec). Maximum timeout 65535 msec
* set to 0 for waiting indefinitely
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t sensor_wait_finger_present(HCP_comm_t *chain, uint16_t timeout);
/**
* @brief Wait for finger not present on sensor"
*
* @param[in] chain - HCP com chain
* @param[in] timeout - timeout (msec). Maximum timeout 65535 msec
* set to 0 for waiting indefinitely
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t sensor_wait_finger_not_present(HCP_comm_t *chain, uint16_t timeout);
/**
* @brief Wait for finger present on sensor and capture image"
*
* @param[in] chain - HCP com chain
* @param[in] timeout - timeout (msec). Maximum timeout 65535 msec
* set to 0 for waiting indefinitely
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_capture(HCP_comm_t *chain, uint16_t timeout);
/**
* @brief Get size of captured image
*
* @param[in] chain - HCP com chain
*
* @param[out] size
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_image_get_size(HCP_comm_t *chain, uint32_t *size);
/**
* @brief Allocates image buffer on FPC BM-LIte
*
* @param[in] chain - HCP com chain
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t image_create(HCP_comm_t *chain);
/**
* @brief Deletes image buffer on FPC BM-LIte
*
* @param[in] chain - HCP com chain
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t image_delete(HCP_comm_t *chain);
/**
* @brief Pull captured image from FPC BM-Lite
*
* @param[in] chain - HCP com chain
*
* @param[in] data - pointer to image buffer
* @param[in] size - size of the image buffer
* if buffer size is not enough the image
* will be truncated
* chain->arg.size will contain real size of the image
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_image_get(HCP_comm_t *chain, uint8_t *data, uint32_t size);
/**
* @brief Push image to FPC BM-Lite
*
* @param[in] chain - HCP com chain
*
* @param[in] data - pointer to image buffer
* @param[in] size - size of the image buffer
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_image_put(HCP_comm_t *chain, uint8_t *data, uint32_t size);
/**
* @brief Extract image features to prepare image for enrolling or matching
*
* @param[in] chain - HCP com chain
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_image_extract(HCP_comm_t *chain);
/**
* @brief Identify prepared image against existing templates in Flash storage
*
* @param[in] chain - HCP com chain
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_identify(HCP_comm_t *chain);
/**
* @brief Enroll finger. Created template must be saved to FLASH storage
*
* @param[in] chain - HCP com chain
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_enroll_finger(HCP_comm_t *chain);
/**
* @brief Capture and identify finger against existing templates in Flash storage
*
* @param[in] chain - HCP com chain
* @param[in] timeout - timeout (msec). Maximum timeout 65535 msec
* set to 0 for waiting indefinitely
*
* @param[out] template_id - pointer for matched template ID
* @param[out] match - pointer to match result
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_identify_finger(HCP_comm_t *chain, uint32_t timeout,
uint16_t *template_id, bool *match);
/**
* @brief Save template after enroll is finished to FLASH storage
*
* @param[in] chain - HCP com chain
* @param[out] template_id - template ID
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_template_save(HCP_comm_t *chain, uint16_t template_id);
/**
* @brief Remove template from RAM
*
* @param[in] chain - HCP com chain
* @param[in] template_id - template ID
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_template_remove_ram(HCP_comm_t *chain);
/**
* @brief Pull template stored in RAM from FPC BM-Lite
*
* @param[in] chain - HCP com chain
*
* @param[in] data - pointer to template buffer
* @param[in] size - size of the template buffer
* if buffer size is not enough the template
* will be truncated
* chain->arg.size will contain real size of the template
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_template_get(HCP_comm_t *chain, uint8_t *data, uint32_t size);
/**
* @brief Push template to FPC BM-Lite and stored it to RAM
*
* @param[in] chain - HCP com chain
*
* @param[in] data - pointer to template buffer
* @param[in] size - size of the template buffer
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_template_put(HCP_comm_t *chain, uint8_t *data, uint16_t length);
/**
* @brief Remove template from FLASH storage
*
* @param[in] chain - HCP com chain
* @param[in] template_id - template ID
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_template_remove(HCP_comm_t *chain, uint16_t template_id);
/**
* @brief Remove all templates from FLASH storage
*
* @param[in] chain - HCP com chain
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_template_remove_all(HCP_comm_t *chain);
/**
* @brief Copy template from FLASH storage to RAM
*
* @param[in] chain - HCP com chain
* @param[in] template_id - template ID
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_template_load_storage(HCP_comm_t *chain, uint16_t template_id);
/**
* @brief Remove template from FLASH storage
*
* @param[in] chain - HCP com chain
* @param[out] template_id - template ID
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_template_get_count(HCP_comm_t *chain, uint16_t *count);
/**
* @brief Get array of template ID stored on FPC BM-LIte
*
* @param[in] chain - HCP com chain
* @return ::fpc_bep_result_t
* chain->arg.data - pointer to array of uint16_t of IDs
* chain->arg.size - length of the array (in bytes). For calculating
* number of templates divide the arg.size by 2
*/
fpc_bep_result_t bep_template_get_ids(HCP_comm_t *chain);
/**
* @brief Software reset of FCP BM-Lite
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_sw_reset(HCP_comm_t *chain);
/**
* @brief Calibrate FPC BM-LIte sensor and store calibration data to FLASH storage
*
* @param[in] chain - HCP com chain
*
* @return ::fpc_bep_result_t
*
* FPC BM-Lite must be restarted to activate new calibration data
*/
fpc_bep_result_t bep_sensor_calibrate(HCP_comm_t *chain);
/**
* @brief Remove FPC BM-LIte sensor calibration data from FLASH storage
*
* @param[in] chain - HCP com chain
*
* @return ::fpc_bep_result_t
*
* FPC BM-Lite must be restarted to activate
*/
fpc_bep_result_t bep_sensor_calibrate_remove(HCP_comm_t *chain);
/**
* @brief Get version of FPC BM-LIte firmware
*
* @param[in] chain - HCP com chain
* @param[in] version - pointer to data buffer
* @param[in] size - size of the data buffer
* if buffer size is not enough the data
* will be truncated
* chain->arg.size will contain real size of the data
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_version(HCP_comm_t *chain, char *version, int len);
/**
* @brief Get version of FPC BM-LIte firmware
*
* @param[in] chain - HCP com chain
* @param[in] unique_id - pointer to data buffer
* chain->arg.size will contain real size of the data
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_unique_id_get(HCP_comm_t *chain, uint8_t *unique_id);
/**
* @brief Set requested UART communication speed
*
* @param[in] chain - HCP com chain
* @param[in] speed - UART speed
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_uart_speed_set(HCP_comm_t *chain, uint32_t speed);
/**
* @brief Get current UART communication speed
*
* @param[in] chain - HCP com chain
* @param[out] speed - UART speed
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_uart_speed_get(HCP_comm_t *chain, uint32_t *speed);
/**
* @brief Reset FPC BM-Lite fingerprint sensor
*
* @param[in] chain - HCP com chain
*
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bep_sensor_reset(HCP_comm_t *chain);
#endif

View File

@ -0,0 +1,92 @@
#ifndef BMLITE_IF_CALLBACKS_H
#define BMLITE_IF_CALLBACKS_H
#include <stdint.h>
#ifndef BMLITE_USE_CALLBACK
#define bmlite_on_error(error, value)
#define bmlite_on_start_capture()
#define bmlite_on_finish_capture()
#define bmlite_on_finish_enroll()
#define bmlite_on_start_enroll()
#define bmlite_on_start_enrollcapture()
#define bmlite_on_finish_enrollcapture()
#define bmlite_on_identify_start()
#define bmlite_on_identify_finish()
#else
typedef enum {
BMLITE_ERROR_OK = 0,
BMLITE_ERROR_CAPTURE,
BMLITE_ERROR_CAPTURE_START,
BMLITE_ERROR_ENROLL_START,
BMLITE_ERROR_ENROLL_ADD,
BMLITE_ERROR_ENROLL_FINISH,
BMLITE_ERROR_WRONG_ANSWER,
BMLITE_ERROR_FINGER_WAIT,
BMLITE_ERROR_IDENTYFY,
BMLITE_ERROR_TEMPLATE_SAVE,
BMLITE_ERROR_TEMPLATE_DELETE,
BMLITE_ERROR_TEMPLATE_COUNT,
BMLITE_ERROR_TEMPLATE_GETIDS,
BMLITE_ERROR_IMAGE_EXTRACT,
BMLITE_ERROR_IMAGE_GETSIZE,
BMLITE_ERROR_IMAGE_GET,
BMLITE_ERROR_GETVERSION,
BMLITE_ERROR_SW_RESET,
BMLITE_ERROR_CALIBRATE,
BMLITE_ERROR_CALIBRATE_DELETE,
BMLITE_ERROR_SEND_CMD,
BMLITE_ERROR_GET_ARG,
} bmlite_error_t;
/**
* @brief Error Callback function
*
* @param[in] Callback Error Code
* @param[in] BEP result code
*/
void bmlite_on_error(bmlite_error_t error, int32_t value);
/**
* @brief Starting Capture Callback function
*/
void bmlite_on_start_capture();
/**
* @brief Finishing Capture Callback function
*/
void bmlite_on_finish_capture();
/**
* @brief Starting Enroll Callback function
*/
void bmlite_on_start_enroll();
/**
* @brief Finishing Enroll Callback function
*/
void bmlite_on_finish_enroll();
/**
* @brief Starting Capture for Enroll Callback function
*/
void bmlite_on_start_enrollcapture();
/**
* @brief Finishing Capture for Enroll Callback function
*/
void bmlite_on_finish_enrollcapture();
/**
* @brief Starting Identify Callback function
*/
void bmlite_on_identify_start();
/**
* @brief Finishing Identify Callback function
*/
void bmlite_on_identify_finish();
#endif // BMLITE_USE_CALLBACK
#endif

View File

@ -1,59 +0,0 @@
/*
* Copyright (c) 2020 Fingerprint Cards AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file com_app_cleartext.h
* @brief TODO
*/
#ifndef COM_APP_CLEARTEXT_H
#define COM_APP_CLEARTEXT_H
#include "fpc_com_chain.h"
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/**
* Sends a packet over the physical link in blocking mode.
*
* @param packet Packet to transmit.
* @param chain The transmit chain to use.
* @return ::fpc_com_result_t
*/
fpc_com_result_t com_app_clr_transmit(fpc_com_chain_t *chain);
/**
* Receives a packet from the physical link.
*
* @param packet Packet to populate.
* @param chain The transmit chain to use.
* @return ::fpc_com_result_t
*/
fpc_com_result_t com_app_clr_receive(fpc_com_chain_t *chain);
/**
* @brief Returns the overhead of the layer.
* @return Overhead size in bytes.
*/
uint16_t com_app_clr_get_overhead(uint16_t *offset);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* COM_APP_CLEARTEXT_H */

View File

@ -1,98 +0,0 @@
/*
* Copyright (c) 2020 Fingerprint Cards AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* 04/14/2020: Added SPI interfcae support
*/
#ifndef COM_COMMON_H
#define COM_COMMON_H
/**
* @file com_common.h
* @brief Communication common interface.
*/
#include <stdint.h>
#include <stdbool.h>
#include "fpc_bep_types.h"
#include "fpc_hcp_common.h"
#include "fpc_com_chain.h"
/**
* @brief Allocates or assigns memory for arguments during HCP packet reassembly.
* @param[in] cmd HCP command.
* @param[in] arg HCP argument.
* @param[in] size size of allocation.
* @param[out] free_data Should data be freed by caller.
* @param[in] context User defined context pointer.
*
* @return Pointer to allocation or NULL if allocation failed.
*/
void *argument_allocator(fpc_hcp_cmd_t cmd, fpc_hcp_arg_t arg, uint16_t size, bool *free_data,
void *context);
/**
* @brief Frees memory for arguments during HCP packet destruction.
*
* @param[in] cmd HCP Command.
* @param[in] arg_data Argument data.
* @param[in] context User defined context pointer.
*/
void argument_free(fpc_hcp_cmd_t cmd, fpc_hcp_arg_data_t *arg_data, void *context);
/**
* @brief Prints packet information to the log.
*
* @param[in] packet Packet to print.
* @param[in] msg Optional message to print. Set NULL if not needed.
*/
void print_packet(fpc_hcp_packet_t *packet, const char *msg);
/**
* @brief Initialize the chain used during communication with the host.
*
* @param[in, out] chain The chain structure to populate.
* @param[in] buffer The buffer to use during communication.
* @param[in] size An array of two sizes, one for the TX buffer size and one for the RX.
* @param[in] context Application context.
* @param[in] spi_enabled Use SPI instead of COM.
*/
void init_com_chain(fpc_com_chain_t *chain, uint8_t *buffer, uint16_t size[2], void *context);
/**
* @brief Convert a COM result from HCP to a BEP result.
*
* @param[in] result COM result to convert.
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t com_to_bep_result(fpc_com_result_t result);
/**
* @brief Allocate and add data to an argument.
*
* @param[in, out] cmd Command to add argument to.
* @param[in] arg Argument to add.
* @param[in] data Data to copy to allocated memory.
* @param[in] size Size of data.
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t arg_add(fpc_hcp_packet_t *cmd, fpc_hcp_arg_t arg, const void *data, uint16_t size);
#endif /* COM_COMMON_H */

View File

@ -0,0 +1,63 @@
#ifndef HCP_H
#define HCP_H
#include "fpc_bep_types.h"
#include "fpc_hcp_common.h"
/** MTU for HCP physical layer */
#define MTU 256
/** Communication acknowledge definition */
#define FPC_BEP_ACK 0x7f01ff7f
typedef struct {
uint32_t size;
uint8_t *data;
} HCP_arg_t;
typedef struct {
/** Send data to BM-Lite */
fpc_bep_result_t (*write) (uint16_t, const uint8_t *, uint32_t, void *);
/** Receive data from BM-Lite */
fpc_bep_result_t (*read)(uint16_t, uint8_t *, uint32_t, void *);
/** Receive timeout (msec). Applys ONLY to receiving packet from BM-Lite on physical layer */
uint32_t phy_rx_timeout;
/** Data buffer for application layer */
uint8_t *pkt_buffer;
/** Size of data buffer */
uint32_t pkt_size_max;
/** Current size of incoming or outcoming command packet */
uint32_t pkt_size;
/** Buffer of MTU size for transport layer */
uint8_t *txrx_buffer;
/** Values of last argument pulled by bmlite_get_arg
Values are valid only right after bmlite_get_arg() call */
HCP_arg_t arg;
/** Result of execution command on BM-Lite */
fpc_bep_result_t bep_result;
} HCP_comm_t;
/**
* @brief Helper function for receiving HCP commands
* @param command_id command to send
* @param arg_key1 first key to receive
* @param arg_data1 first argument data
* @param arg_data1_length first argument data length
* @param arg_key2 second key to receive
* @param arg_data2 second argument data
* @param arg_data2_length second argument
* @return ::fpc_bep_result_t
*/
fpc_bep_result_t bmlite_receive(HCP_comm_t *hcp_comm);
fpc_bep_result_t bmlite_send(HCP_comm_t *hcp_comm);
fpc_bep_result_t bmlite_tranceive(HCP_comm_t *hcp_comm);
fpc_bep_result_t bmlite_init_cmd(HCP_comm_t *hcp_comm, uint16_t cmd, uint16_t arg);
fpc_bep_result_t bmlite_add_arg(HCP_comm_t *hcp_comm, uint16_t arg, void *data, uint16_t size);
fpc_bep_result_t bmlite_get_arg(HCP_comm_t *hcp_comm, uint16_t arg_type);
fpc_bep_result_t bmlite_copy_arg(HCP_comm_t *hcp_comm, uint16_t arg_key, void *arg_data, uint16_t arg_data_length);
#endif

View File

@ -26,7 +26,7 @@
#include <stdbool.h> #include <stdbool.h>
#include <stddef.h> #include <stddef.h>
#include "fpc_com_result.h" #include "fpc_bep_types.h"
/** /**
* @brief LED status. * @brief LED status.
@ -64,7 +64,7 @@ void platform_bmlite_reset(void);
* *
* @return ::fpc_com_result_t * @return ::fpc_com_result_t
*/ */
fpc_com_result_t platform_bmlite_send(uint16_t size, const uint8_t *data, uint32_t timeout, fpc_bep_result_t platform_bmlite_send(uint16_t size, const uint8_t *data, uint32_t timeout,
void *session); void *session);
/** /**
@ -76,7 +76,7 @@ fpc_com_result_t platform_bmlite_send(uint16_t size, const uint8_t *data, uint32
* *
* @return ::fpc_com_result_t * @return ::fpc_com_result_t
*/ */
fpc_com_result_t platform_bmlite_receive(uint16_t size, uint8_t *data, uint32_t timeout, fpc_bep_result_t platform_bmlite_receive(uint16_t size, uint8_t *data, uint32_t timeout,
void *session); void *session);
/** /**
@ -96,4 +96,12 @@ void platform_sw_reset(void) __attribute__((__noreturn__));
*/ */
uint32_t platform_get_button_press_time(void); uint32_t platform_get_button_press_time(void);
/**
* @brief Check if button was pressed and released.
*
* @return Button press time in milli seconds.
*/
uint32_t platform_check_button_pressed(void);
#endif /* PLATFORM_H */ #endif /* PLATFORM_H */

View File

@ -1,534 +0,0 @@
/*
* Copyright (c) 2020 Fingerprint Cards AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file bep_host_if.c
* @brief BEP Host Interface implementation.
*/
#include <stddef.h>
#include <string.h>
#include <stdio.h>
#include "fpc_bep_types.h"
#include "fpc_hcp_common.h"
#include "fpc_com_result.h"
#include "fpc_hcp.h"
#include "platform.h"
#include "com_common.h"
#include "bep_host_if.h"
/** Returns the number of elements in an array. */
#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
#define RECEIVE_TIMEOUT 10
/** Maximum attempts for capture image */
static const uint8_t MAX_CAPTURE_ATTEMPTS = 15U;
static const uint16_t CAPTURE_TIMEOUT = 3000;
/**
* @brief Mock callback functions
*/
__attribute__((weak)) void bmlite_on_error(bmlite_error_t error, int32_t value) { (void)error; (void)value; }
__attribute__((weak)) void bmlite_on_start_capture() {}
__attribute__((weak)) void bmlite_on_finish_capture() {}
__attribute__((weak)) void bmlite_on_finish_enroll() {}
__attribute__((weak)) void bmlite_on_start_enroll() {}
__attribute__((weak)) void bmlite_on_start_enrollcapture() {}
__attribute__((weak)) void bmlite_on_finish_enrollcapture() {}
__attribute__((weak)) void bmlite_on_identify_start() {}
__attribute__((weak)) void bmlite_on_identify_finish() {}
/**
* @brief Helper function for sending HCP commands
*
* @param chain HCP communication chain
* @param command_id command to send
* @param arg_key1 first key to add to the command
* @param arg_data1 first argument data to add
* @param arg_data1_length first data length of argument data
* @param arg_key2 second key to add to the command
* @param arg_data2 second argument data to add
* @param arg_data2_length second data length of argument data
* @return ::fpc_bep_result_t
*/
static fpc_bep_result_t send_command_args2(fpc_com_chain_t *chain, fpc_hcp_cmd_t command_id,
fpc_hcp_arg_t arg_key1, void *arg_data1, uint16_t arg_data1_length,
fpc_hcp_arg_t arg_key2, void *arg_data2, uint16_t arg_data2_length)
{
fpc_hcp_packet_t command;
fpc_bep_result_t bep_result;
fpc_com_result_t com_result;
fpc_hcp_arg_data_t args_tx[10] = {{ 0 }};
memset(&command, 0x0, sizeof(command));
command.arguments = args_tx;
command.num_args = ARRAY_SIZE(args_tx);
command.id = command_id;
if (arg_key1 != ARG_NONE) {
if (!fpc_hcp_arg_add(&command, arg_key1, arg_data1_length, false, arg_data1)) {
bep_result = FPC_BEP_RESULT_NO_MEMORY;
goto exit;
}
}
if (arg_key2 != ARG_NONE) {
if (!fpc_hcp_arg_add(&command, arg_key2, arg_data2_length, false, arg_data2)) {
bep_result = FPC_BEP_RESULT_NO_MEMORY;
goto exit;
}
}
com_result = fpc_hcp_transmit(&command, chain);
bep_result = com_to_bep_result(com_result);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_SEND_CMD, bep_result);
}
exit:
fpc_hcp_free(chain, &command);
return bep_result;
}
static fpc_bep_result_t send_command_no_args(fpc_com_chain_t *chain, fpc_hcp_cmd_t command_id)
{
return send_command_args2(chain, command_id, ARG_NONE, NULL, 0, ARG_NONE, NULL, 0);
}
static fpc_bep_result_t send_command(fpc_com_chain_t *chain, fpc_hcp_cmd_t command_id,
fpc_hcp_arg_t arg_key, void *arg_data, uint16_t arg_data_length)
{
return send_command_args2(chain, command_id, arg_key, arg_data, arg_data_length,
ARG_NONE, NULL, 0);
}
/**
* @brief Helper function for receiving HCP commands
* @param command_id command to send
* @param arg_key1 first key to receive
* @param arg_data1 first argument data
* @param arg_data1_length first argument data length
* @param arg_key2 second key to receive
* @param arg_data2 second argument data
* @param arg_data2_length second argument
* @return ::fpc_bep_result_t
*/
static fpc_bep_result_t receive_result_args2(fpc_com_chain_t *chain,
fpc_hcp_arg_t arg_key1, void *arg_data1, uint16_t arg_data1_length,
fpc_hcp_arg_t arg_key2, void *arg_data2, uint16_t arg_data2_length)
{
fpc_hcp_packet_t response;
fpc_hcp_arg_data_t args_rx[10] = {{ 0 }};
fpc_bep_result_t bep_result = FPC_BEP_RESULT_GENERAL_ERROR;
fpc_hcp_arg_data_t *arg_data;
memset(&response, 0x0, sizeof(fpc_hcp_cmd_t));
response.arguments = args_rx;
response.num_args = ARRAY_SIZE(args_rx);
do {
fpc_com_result_t com_result = fpc_hcp_receive(&response, chain);
bep_result = com_to_bep_result(com_result);
} while (bep_result == FPC_BEP_RESULT_TIMEOUT);
if (bep_result != FPC_BEP_RESULT_OK) {
goto exit;
}
/* Check bep result first */
arg_data = fpc_hcp_arg_get(&response, ARG_RESULT);
if (arg_data) {
bep_result = *(int8_t *)arg_data->data;
} else {
bep_result = FPC_BEP_RESULT_INVALID_ARGUMENT;
}
if (bep_result != FPC_BEP_RESULT_OK) {
goto exit;
}
/* Get first argument */
if (arg_key1 != ARG_NONE) {
arg_data = fpc_hcp_arg_get(&response, arg_key1);
if (arg_data && arg_data->size <= arg_data1_length) {
memcpy(arg_data1, arg_data->data, arg_data->size);
} else {
bep_result = FPC_BEP_RESULT_INVALID_ARGUMENT;
goto exit;
}
}
/* Get second argument */
if (arg_key2 != ARG_NONE) {
arg_data = fpc_hcp_arg_get(&response, arg_key2);
if (arg_data && arg_data->size <= arg_data2_length) {
memcpy(arg_data2, arg_data->data, arg_data->size);
}
}
exit:
fpc_hcp_free(chain, &response);
return bep_result;
}
static fpc_bep_result_t receive_result_no_args(fpc_com_chain_t *chain)
{
return receive_result_args2(chain, ARG_NONE, NULL, 0, ARG_NONE, NULL, 0);
}
static fpc_bep_result_t receive_result_args1(fpc_com_chain_t *chain,
fpc_hcp_arg_t arg_key, void *arg_data, uint16_t arg_data_length)
{
return receive_result_args2(chain, arg_key, arg_data, arg_data_length, ARG_NONE, NULL, 0);
}
fpc_bep_result_t bep_capture(fpc_com_chain_t *chain, uint16_t timeout)
{
fpc_bep_result_t bep_result;
/* Capture finger down */
bep_result = send_command(chain, CMD_CAPTURE, ARG_TIMEOUT, &timeout, sizeof(timeout));
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_CAPTURE_START, bep_result);
return bep_result;
}
bmlite_on_start_capture();
bep_result = receive_result_no_args(chain);
bmlite_on_finish_capture();
return bep_result;
}
fpc_bep_result_t bep_enroll_finger(fpc_com_chain_t *chain)
{
uint32_t samples_remaining = 0;
fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK;
bool enroll_done = false;
bmlite_on_start_enroll();
/* Enroll start */
bep_result = send_command(chain, CMD_ENROLL, ARG_START, NULL, 0);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_ENROLL_START, bep_result);
goto exit;
}
bep_result = receive_result_no_args(chain);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_WRONG_ANSWER, bep_result);
goto exit;
}
for (uint8_t i = 0; i < MAX_CAPTURE_ATTEMPTS; ++i) {
bmlite_on_start_enrollcapture();
bep_result = bep_capture(chain, CAPTURE_TIMEOUT);
bmlite_on_finish_enrollcapture();
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_CAPTURE, bep_result);
break;
}
/* Enroll add */
bep_result = send_command(chain, CMD_ENROLL, ARG_ADD, NULL, 0);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_ENROLL_ADD, bep_result);
continue;
}
bep_result = receive_result_args1(chain, ARG_COUNT, &samples_remaining,
sizeof(samples_remaining));
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_WRONG_ANSWER, bep_result);
continue;
}
if (samples_remaining == 0U) {
enroll_done = true;
break;
}
bep_result = send_command(chain, CMD_WAIT, ARG_FINGER_UP, NULL, 0);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_FINGER_WAIT, bep_result);
continue;
}
/* Wait for finger to be lifted from sensor */
bep_result = receive_result_no_args(chain);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_WRONG_ANSWER, bep_result);
continue;
}
}
bep_result = send_command(chain, CMD_ENROLL, ARG_FINISH, NULL, 0);
if (bep_result == FPC_BEP_RESULT_OK) {
bep_result = receive_result_no_args(chain);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_ENROLL_FINISH, bep_result);
}
}
exit:
bmlite_on_finish_enroll();
return (!enroll_done) ? FPC_BEP_RESULT_GENERAL_ERROR : bep_result;
}
fpc_bep_result_t bep_identify_finger(fpc_com_chain_t *chain, uint16_t *template_id, bool *match)
{
fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK;
*match = false;
bmlite_on_identify_start();
bep_result = bep_capture(chain, CAPTURE_TIMEOUT);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_CAPTURE, bep_result);
goto exit;
}
bep_result = bep_image_extract(chain);
if (bep_result != FPC_BEP_RESULT_OK) {
goto exit;
}
bep_result = send_command(chain, CMD_IDENTIFY, ARG_NONE, NULL, 0);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_IDENTYFY, bep_result);
goto exit;
}
bep_result = receive_result_args2(chain, ARG_MATCH, match, sizeof(bool),
ARG_ID, template_id, sizeof(uint16_t));
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_WRONG_ANSWER, bep_result);
goto exit;
}
exit:
bmlite_on_identify_finish();
return bep_result;
}
fpc_bep_result_t bep_save_template(fpc_com_chain_t *chain, uint16_t template_id)
{
fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK;
bep_result = send_command_args2(chain, CMD_TEMPLATE, ARG_SAVE, NULL, 0, ARG_ID, &template_id,
sizeof(template_id));
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_TEMPLATE_SAVE, bep_result);
return bep_result;
}
return receive_result_no_args(chain);
}
fpc_bep_result_t bep_delete_template(fpc_com_chain_t *chain, uint16_t template_id)
{
fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK;
if (template_id == REMOVE_ID_ALL_TEMPLATES) {
bep_result = send_command_args2(chain, CMD_STORAGE_TEMPLATE, ARG_DELETE, NULL, 0,
ARG_ALL, NULL, 0);
} else {
bep_result = send_command_args2(chain, CMD_STORAGE_TEMPLATE, ARG_DELETE, NULL, 0,
ARG_ID, &template_id, sizeof(template_id));
}
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_TEMPLATE_DELETE, bep_result);
return bep_result;
}
return receive_result_no_args(chain);
}
fpc_bep_result_t bep_get_template_count(fpc_com_chain_t *chain, uint32_t *template_count)
{
fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK;
bep_result = send_command(chain, CMD_STORAGE_TEMPLATE, ARG_COUNT, NULL, 0);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_TEMPLATE_COUNT, bep_result);
return bep_result;
}
bep_result = receive_result_args1(chain, ARG_COUNT, template_count, sizeof(template_count[0]));
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_WRONG_ANSWER, bep_result);
return bep_result;
}
return bep_result;
}
fpc_bep_result_t bep_get_template_ids(fpc_com_chain_t *chain, uint16_t *template_ids,
uint32_t nof_templates)
{
fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK;
bep_result = send_command(chain, CMD_STORAGE_TEMPLATE, ARG_ID, NULL, 0);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_TEMPLATE_GETIDS, bep_result);
return bep_result;
}
bep_result = receive_result_args1(chain, ARG_DATA, template_ids, nof_templates *
sizeof(template_ids[0]));
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_WRONG_ANSWER, bep_result);
return bep_result;
}
return bep_result;
}
fpc_bep_result_t bep_image_extract(fpc_com_chain_t *chain)
{
fpc_bep_result_t bep_result;
bep_result = send_command(chain, CMD_IMAGE, ARG_EXTRACT, NULL, 0);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_IMAGE_EXTRACT, bep_result);
return bep_result;
}
return receive_result_no_args(chain);
}
fpc_bep_result_t bep_image_get_size(fpc_com_chain_t *chain, uint32_t *size)
{
fpc_bep_result_t bep_result;
bep_result = send_command(chain, CMD_IMAGE, ARG_SIZE, NULL, 0);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_IMAGE_GETSIZE, bep_result);
return bep_result;
}
return receive_result_args1(chain, ARG_SIZE, size, sizeof(size));
}
fpc_bep_result_t bep_image_get(fpc_com_chain_t *chain, uint8_t *data, uint32_t size)
{
fpc_bep_result_t bep_result;
bep_result = send_command(chain, CMD_IMAGE, ARG_UPLOAD, NULL, 0);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_IMAGE_GET, bep_result);
return bep_result;
}
return receive_result_args1(chain, ARG_DATA, data, size);
}
fpc_bep_result_t bep_version(fpc_com_chain_t *chain, char *version, int len)
{
fpc_bep_result_t bep_result;
bep_result = send_command_args2(chain, CMD_INFO, ARG_GET, NULL, 0, ARG_VERSION, NULL, 0);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_GETVERSION, bep_result);
return bep_result;
}
return receive_result_args1(chain, ARG_VERSION, version, len);
}
fpc_bep_result_t bep_reset(fpc_com_chain_t *chain)
{
fpc_bep_result_t bep_result;
bep_result = send_command_no_args(chain, CMD_RESET);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_SW_RESET, bep_result);
return bep_result;
}
return receive_result_no_args(chain);
}
fpc_bep_result_t bep_sensor_calibrate(fpc_com_chain_t *chain)
{
fpc_bep_result_t bep_result;
bep_result = send_command_no_args(chain, CMD_STORAGE_CALIBRATION);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_CALIBRATE, bep_result);
return bep_result;
}
return receive_result_no_args(chain);
}
fpc_bep_result_t bep_sensor_calibrate_remove(fpc_com_chain_t *chain)
{
fpc_bep_result_t bep_result;
bep_result = send_command(chain, CMD_STORAGE_CALIBRATION, ARG_DELETE, NULL, 0);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_CALIBRATE_DELETE, bep_result);
return bep_result;
}
return receive_result_no_args(chain);
}
fpc_bep_result_t bep_sensor_wait_for_finger(fpc_com_chain_t *chain, uint16_t timeout)
{
fpc_bep_result_t bep_result;
bep_result = send_command(chain, CMD_WAIT, ARG_FINGER_DOWN, NULL, 0);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_FINGER_WAIT, bep_result);
return bep_result;
}
/* Wait for finger on sensor */
return receive_result_no_args(chain);
}
fpc_bep_result_t bep_sensor_wait_finger_not_present(fpc_com_chain_t *chain, uint16_t timeout)
{
fpc_bep_result_t bep_result;
bep_result = send_command(chain, CMD_WAIT, ARG_FINGER_UP, NULL, 0);
if (bep_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_FINGER_WAIT, bep_result);
return bep_result;
}
/* Wait for finger to be lifted from sensor */
return receive_result_no_args(chain);
}

View File

@ -0,0 +1,308 @@
#include "hcp_tiny.h"
#include "bmlite_if.h"
#include "bmlite_hal.h"
#include "platform.h"
#include <stdio.h>
#include "bmlite_if_callbacks.h"
#define MAX_CAPTURE_ATTEMPTS 15
#define CAPTURE_TIMEOUT 3000
#define exit_if_err(c) { bep_result = c; if(bep_result) goto exit; }
#define assert(c) { fpc_bep_result_t res = c; if(res) return res; }
#ifdef BMLITE_USE_CALLBACK
/**
* @brief Mock callback functions
*/
__attribute__((weak)) void bmlite_on_error(bmlite_error_t error, int32_t value) { (void)error; (void)value; }
__attribute__((weak)) void bmlite_on_start_capture() {}
__attribute__((weak)) void bmlite_on_finish_capture() {}
__attribute__((weak)) void bmlite_on_start_enroll() {}
__attribute__((weak)) void bmlite_on_finish_enroll() {}
__attribute__((weak)) void bmlite_on_start_enrollcapture() {}
__attribute__((weak)) void bmlite_on_finish_enrollcapture() {}
__attribute__((weak)) void bmlite_on_identify_start() {}
__attribute__((weak)) void bmlite_on_identify_finish() {}
#endif
fpc_bep_result_t bmlite_send_cmd(HCP_comm_t *chain, uint16_t cmd, uint16_t arg_type)
{
assert(bmlite_init_cmd(chain, cmd, arg_type));
return bmlite_tranceive(chain);
}
fpc_bep_result_t bmlite_send_cmd_arg(HCP_comm_t *chain, uint16_t cmd, uint16_t arg1_type, uint16_t arg2_type, void *arg2_data, uint16_t arg2_length)
{
assert(bmlite_init_cmd(chain, cmd, arg1_type));
assert(bmlite_add_arg(chain, arg2_type, arg2_data, arg2_length));
return bmlite_tranceive(chain);
}
fpc_bep_result_t sensor_wait_finger_present(HCP_comm_t *chain, uint16_t timeout)
{
fpc_bep_result_t bep_result;
uint32_t prev_timeout = chain->phy_rx_timeout;
bmlite_on_start_capture();
chain->phy_rx_timeout = timeout;
bep_result = bmlite_send_cmd_arg(chain, CMD_WAIT, ARG_FINGER_DOWN, ARG_TIMEOUT, &timeout, sizeof(timeout));
chain->phy_rx_timeout = prev_timeout;
bmlite_on_finish_capture();
return bep_result;
}
fpc_bep_result_t sensor_wait_finger_not_present(HCP_comm_t *chain, uint16_t timeout)
{
fpc_bep_result_t bep_result;
uint32_t prev_timeout = chain->phy_rx_timeout;
chain->phy_rx_timeout = timeout;
bep_result = bmlite_send_cmd_arg(chain, CMD_WAIT, ARG_FINGER_UP, ARG_TIMEOUT, &timeout, sizeof(timeout));
chain->phy_rx_timeout = prev_timeout;
return bep_result;
}
fpc_bep_result_t bep_capture(HCP_comm_t *chain, uint16_t timeout)
{
fpc_bep_result_t bep_result;
uint32_t prev_timeout = chain->phy_rx_timeout;
bmlite_on_start_capture();
chain->phy_rx_timeout = timeout;
bep_result = bmlite_send_cmd_arg(chain, CMD_CAPTURE, ARG_NONE, ARG_TIMEOUT, &timeout, sizeof(timeout));
chain->phy_rx_timeout = prev_timeout;
bmlite_on_finish_capture();
return bep_result;
}
fpc_bep_result_t bep_image_get_size(HCP_comm_t *chain, uint32_t *size)
{
assert(bmlite_send_cmd(chain, CMD_IMAGE, ARG_SIZE));
assert(bmlite_get_arg(chain, ARG_SIZE));
*size = *(uint32_t*)chain->arg.data;
return FPC_BEP_RESULT_OK;
}
fpc_bep_result_t image_create(HCP_comm_t *chain)
{
return bmlite_send_cmd(chain, CMD_IMAGE, ARG_CREATE);
}
fpc_bep_result_t image_delete(HCP_comm_t *chain)
{
return bmlite_send_cmd(chain, CMD_IMAGE, ARG_DELETE);
}
fpc_bep_result_t bep_image_get(HCP_comm_t *chain, uint8_t *data, uint32_t size)
{
assert(bmlite_send_cmd(chain, CMD_IMAGE, ARG_UPLOAD));
return bmlite_copy_arg(chain, ARG_DATA, data, size);
}
fpc_bep_result_t bep_image_put(HCP_comm_t *chain, uint8_t *data, uint32_t size)
{
return bmlite_send_cmd_arg(chain, CMD_IMAGE, ARG_DOWNLOAD, ARG_DATA, data, size);
}
fpc_bep_result_t bep_image_extract(HCP_comm_t *chain)
{
return bmlite_send_cmd(chain, CMD_IMAGE, ARG_EXTRACT);
}
fpc_bep_result_t bep_identify(HCP_comm_t *chain)
{
return bmlite_send_cmd(chain, CMD_IDENTIFY, ARG_NONE);
}
fpc_bep_result_t bep_enroll_finger(HCP_comm_t *chain)
{
uint32_t samples_remaining = 0;
fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK;
bool enroll_done = false;
bmlite_on_start_enroll();
/* Enroll start */
exit_if_err(bmlite_send_cmd(chain, CMD_ENROLL, ARG_START));
for (uint8_t i = 0; i < MAX_CAPTURE_ATTEMPTS; ++i) {
bmlite_on_start_enrollcapture();
bep_result = bep_capture(chain, CAPTURE_TIMEOUT);
bmlite_on_finish_enrollcapture();
if (bep_result != FPC_BEP_RESULT_OK) {
continue;
}
/* Enroll add */
bep_result = bmlite_send_cmd(chain, CMD_ENROLL, ARG_ADD);
if (bep_result != FPC_BEP_RESULT_OK) {
continue;
}
bmlite_get_arg(chain, ARG_COUNT);
samples_remaining = *(uint32_t *)chain->arg.data;
// log_info("Enroll samples remaining: %d\n", samples_remaining);
/* Break enrolling if we can't collect enough correct images for enroll*/
if (samples_remaining == 0U) {
enroll_done = true;
break;
}
sensor_wait_finger_not_present(chain, 0);
}
bep_result = bmlite_send_cmd(chain, CMD_ENROLL, ARG_FINISH);
exit:
bmlite_on_finish_enroll();
return (!enroll_done) ? FPC_BEP_RESULT_GENERAL_ERROR : bep_result;
}
fpc_bep_result_t bep_identify_finger(HCP_comm_t *chain, uint32_t timeout, uint16_t *template_id, bool *match)
{
fpc_bep_result_t bep_result;
*match = false;
bmlite_on_identify_start();
exit_if_err(bep_capture(chain, timeout));
exit_if_err(bep_image_extract(chain));
exit_if_err(bep_identify(chain));
exit_if_err(bmlite_get_arg(chain, ARG_MATCH));
*match = *(bool *)chain->arg.data;
if(*match) {
bmlite_get_arg(chain, ARG_ID);
*template_id = *(uint16_t *)chain->arg.data;
// Delay for possible updating template on BM-Lite
hal_timebase_busy_wait(50);
}
bep_result = sensor_wait_finger_not_present(chain, 0);
exit:
bmlite_on_identify_finish();
return bep_result;
}
fpc_bep_result_t bep_template_save(HCP_comm_t *chain, uint16_t template_id)
{
return bmlite_send_cmd_arg(chain, CMD_TEMPLATE, ARG_SAVE, ARG_ID, &template_id, sizeof(template_id));
}
fpc_bep_result_t bep_template_remove_ram(HCP_comm_t *chain)
{
return bmlite_send_cmd(chain, CMD_TEMPLATE, ARG_DELETE);
}
fpc_bep_result_t bep_template_get(HCP_comm_t *chain, uint8_t *data, uint32_t size)
{
assert(bmlite_send_cmd(chain, CMD_TEMPLATE, ARG_UPLOAD));
return bmlite_copy_arg(chain, ARG_DATA, data, size);
}
fpc_bep_result_t bep_template_put(HCP_comm_t *chain, uint8_t *data, uint16_t length)
{
return bmlite_send_cmd_arg(chain, CMD_TEMPLATE, ARG_DOWNLOAD,
ARG_DATA, data, length);
}
fpc_bep_result_t bep_template_remove(HCP_comm_t *chain, uint16_t template_id)
{
return bmlite_send_cmd_arg(chain, CMD_STORAGE_TEMPLATE, ARG_DELETE,
ARG_ID, &template_id, sizeof(template_id));
}
fpc_bep_result_t bep_template_remove_all(HCP_comm_t *chain)
{
return bmlite_send_cmd_arg(chain, CMD_STORAGE_TEMPLATE, ARG_DELETE,
ARG_ALL, 0, 0);
}
fpc_bep_result_t bep_template_load_storage(HCP_comm_t *chain, uint16_t template_id)
{
return bmlite_send_cmd_arg(chain, CMD_STORAGE_TEMPLATE, ARG_UPLOAD,
ARG_ID, &template_id, sizeof(template_id));
}
fpc_bep_result_t bep_template_get_count(HCP_comm_t *chain, uint16_t *count)
{
assert(bmlite_send_cmd(chain, CMD_STORAGE_TEMPLATE, ARG_COUNT));
assert(bmlite_get_arg(chain, ARG_COUNT));
*count = *(uint16_t*)chain->arg.data;
return FPC_BEP_RESULT_OK;
}
fpc_bep_result_t bep_template_get_ids(HCP_comm_t *chain)
{
assert(bmlite_send_cmd(chain, CMD_STORAGE_TEMPLATE, ARG_ID));
return bmlite_get_arg(chain, ARG_DATA);
}
fpc_bep_result_t bep_sw_reset(HCP_comm_t *chain)
{
return bmlite_send_cmd(chain, CMD_RESET, ARG_NONE);
}
fpc_bep_result_t bep_sensor_calibrate(HCP_comm_t *chain)
{
return bmlite_send_cmd(chain, CMD_STORAGE_CALIBRATION, ARG_NONE);
}
fpc_bep_result_t bep_sensor_calibrate_remove(HCP_comm_t *chain)
{
return bmlite_send_cmd(chain, CMD_STORAGE_CALIBRATION, ARG_DELETE);
}
fpc_bep_result_t bep_version(HCP_comm_t *chain, char *version, int len)
{
assert(bmlite_send_cmd_arg(chain, CMD_INFO, ARG_GET, ARG_VERSION, 0, 0));
return bmlite_copy_arg(chain, ARG_VERSION, version, len);
}
fpc_bep_result_t bep_unique_id_get(HCP_comm_t *chain, uint8_t *unique_id)
{
assert(bmlite_send_cmd_arg(chain, CMD_INFO, ARG_GET, ARG_UNIQUE_ID, 0, 0));
return bmlite_copy_arg(chain, ARG_UNIQUE_ID, unique_id, 12);
}
fpc_bep_result_t bep_uart_speed_set(HCP_comm_t *chain, uint32_t speed)
{
assert(bmlite_init_cmd(chain, CMD_COMMUNICATION, ARG_SPEED));
assert(bmlite_add_arg(chain, ARG_SET, 0, 0));
assert(bmlite_add_arg(chain, ARG_DATA, (uint8_t*)&speed, sizeof(speed)));
return bmlite_tranceive(chain);
}
fpc_bep_result_t bep_uart_speed_get(HCP_comm_t *chain, uint32_t *speed)
{
assert(bmlite_init_cmd(chain, CMD_COMMUNICATION, ARG_SPEED));
assert(bmlite_add_arg(chain, ARG_GET, 0, 0));
assert(bmlite_tranceive(chain));
return bmlite_copy_arg(chain, ARG_DATA, speed, sizeof(speed));
}
fpc_bep_result_t bep_sensor_reset(HCP_comm_t *chain)
{
// Delay for possible updating template on BM-Lite
hal_timebase_busy_wait(50);
return bmlite_send_cmd(chain, CMD_SENSOR, ARG_RESET);
}

View File

@ -1,66 +0,0 @@
/*
* Copyright (c) 2020 Fingerprint Cards AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file com_app_cleartext.c
* @brief TODO
*/
#include <stddef.h>
#include <string.h>
#include "com_app_cleartext.h"
#include "fpc_hcp.h"
fpc_com_result_t com_app_clr_transmit(fpc_com_chain_t *chain)
{
fpc_com_packet_tsp_t tsp_packet = { 0 };
uint16_t tsp_offset;
uint16_t link_offset;
/* Get offsets */
chain->link_overhead_get(&link_offset);
chain->tsp_overhead_get(&tsp_offset);
/* Create header */
tsp_packet.data = chain->phy_mtu_buffer[FPC_COM_CHAIN_TX] + link_offset + tsp_offset;
tsp_packet.size = chain->app_packet_size[FPC_COM_CHAIN_TX];
tsp_packet.seq_len = chain->private_vars.hcp_seq_len;
tsp_packet.seq_nr = chain->private_vars.hcp_seq_nr;
return chain->tsp_tx(&tsp_packet, chain);
}
fpc_com_result_t com_app_clr_receive(fpc_com_chain_t *chain)
{
fpc_com_result_t result;
fpc_com_packet_tsp_t tsp_packet = { 0 };
result = chain->tsp_rx(&tsp_packet, chain);
chain->app_packet_size[FPC_COM_CHAIN_RX] = tsp_packet.size;
return result;
}
uint16_t com_app_clr_get_overhead(uint16_t *offset)
{
if (offset) {
*offset = 0;
}
return 0;
}

View File

@ -1,193 +0,0 @@
/*
* Copyright (c) 2020 Fingerprint Cards AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* 04/14/2020: Added SPI interfcae support
*/
/**
* @file com_common.c
* @brief TODO
*/
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "fpc_com_transport.h"
#include "fpc_com_link.h"
#include "fpc_hcp.h"
#include "fpc_crc.h"
#include "platform.h"
#include "com_app_cleartext.h"
#include "com_common.h"
#define UNUSED(x) (void)(x)
__attribute__((weak)) void *argument_allocator(fpc_hcp_cmd_t cmd, fpc_hcp_arg_t arg, uint16_t size,
bool *free_data, void *context)
{
void *pointer = NULL;
UNUSED(cmd);
UNUSED(arg);
UNUSED(context);
/* Default behavior */
pointer = malloc(size);
if (free_data != NULL) {
*free_data = true;
}
return pointer;
}
__attribute__((weak)) void argument_free(fpc_hcp_cmd_t cmd, fpc_hcp_arg_data_t *arg_data,
void *context)
{
UNUSED(cmd);
UNUSED(context);
if (arg_data->free_data) {
free(arg_data->data);
arg_data->data = NULL;
}
}
__attribute__((weak)) void print_packet(fpc_hcp_packet_t *packet, const char* msg)
{
#if (FPC_LOG_INCLUDE == 1)
if (!packet) {
fpc_log_app_var(FPC_LOG_LEVEL_INFO, "Invalid argument");
return;
}
fpc_log_app_var(FPC_LOG_LEVEL_DEBUG, "%sPacket cmd id=0x%04X", msg != NULL ? msg : "",
packet->id);
for (int i = 0; i < packet->num_args; ++i) {
if (packet->arguments[i].arg != ARG_NONE) {
fpc_log_app_var(FPC_LOG_LEVEL_DEBUG, "\tArg[%02d]: key=0x%04X, size=%d free=%d", i,
packet->arguments[i].arg, packet->arguments[i].size,
packet->arguments[i].free_data);
}
}
#else
UNUSED(packet);
UNUSED(msg);
#endif
}
__attribute__((weak)) void init_com_chain(fpc_com_chain_t *chain, uint8_t *buffer, uint16_t size[2],
void *context)
{
chain->initialized = true;
/* CRC */
chain->crc_calc = fpc_crc;
/* HCP */
chain->app_tx = com_app_clr_transmit;
chain->app_rx = com_app_clr_receive;
chain->app_overhead_get = com_app_clr_get_overhead;
chain->argument_allocator = argument_allocator;
chain->argument_free = argument_free;
chain->app_packet_size[FPC_COM_CHAIN_TX] = 0;
chain->app_packet_size[FPC_COM_CHAIN_RX] = 0;
chain->app_mtu_buffer[FPC_COM_CHAIN_TX] = NULL;
chain->app_mtu_buffer[FPC_COM_CHAIN_RX] = NULL;
chain->app_mtu_size[FPC_COM_CHAIN_TX] = 0;
chain->app_mtu_size[FPC_COM_CHAIN_RX] = 0;
/* Transport */
chain->tsp_tx = fpc_com_transport_transmit;
chain->tsp_rx = fpc_com_transport_receive;
chain->tsp_overhead_get = fpc_com_transport_get_overhead;
/* Link */
chain->link_overhead_get = fpc_com_link_get_overhead;
/* Phy */
chain->phy_tx = platform_bmlite_send;
chain->phy_rx = platform_bmlite_receive;
chain->phy_mtu_size[FPC_COM_CHAIN_TX] = size[FPC_COM_CHAIN_TX];
chain->phy_mtu_size[FPC_COM_CHAIN_RX] = size[FPC_COM_CHAIN_RX];
chain->phy_mtu_buffer[FPC_COM_CHAIN_TX] = buffer;
chain->phy_mtu_buffer[FPC_COM_CHAIN_RX] = buffer + size[FPC_COM_CHAIN_TX];
chain->phy_timeout_tx = 2000;
chain->phy_timeout_rx = 2000;
chain->session = NULL;
chain->context = context;
}
fpc_bep_result_t com_to_bep_result(fpc_com_result_t result)
{
fpc_bep_result_t bep_result;
switch (result) {
case FPC_COM_RESULT_OK :
bep_result = FPC_BEP_RESULT_OK;
break;
case FPC_COM_RESULT_NO_MEMORY:
bep_result = FPC_BEP_RESULT_NO_MEMORY;
break;
case FPC_COM_RESULT_INVALID_ARGUMENT:
bep_result = FPC_BEP_RESULT_INVALID_ARGUMENT;
break;
case FPC_COM_RESULT_NOT_IMPLEMENTED:
bep_result = FPC_BEP_RESULT_NOT_IMPLEMENTED;
break;
case FPC_COM_RESULT_IO_ERROR:
bep_result = FPC_BEP_RESULT_IO_ERROR;
break;
case FPC_COM_RESULT_TIMEOUT:
bep_result = FPC_BEP_RESULT_TIMEOUT;
break;
default:
bep_result = FPC_BEP_RESULT_GENERAL_ERROR;
break;
}
return bep_result;
}
fpc_bep_result_t arg_add(fpc_hcp_packet_t *cmd, fpc_hcp_arg_t arg, const void *data, uint16_t size)
{
fpc_bep_result_t result = FPC_BEP_RESULT_OK;
uint32_t *pointer;
if (cmd == NULL || data == NULL || size == 0) {
result = FPC_BEP_RESULT_INVALID_ARGUMENT;
goto exit;
}
pointer = malloc(size);
if (pointer == NULL) {
result = FPC_BEP_RESULT_NO_MEMORY;
goto exit;
}
memcpy(pointer, data, size);
if (fpc_hcp_arg_add(cmd, arg, size, true, pointer) == false) {
free(pointer);
result = FPC_BEP_RESULT_NO_RESOURCE;
}
exit:
return result;
}

View File

@ -0,0 +1,291 @@
#include <string.h>
#include "platform.h"
#include "fpc_crc.h"
#include "fpc_hcp_common.h"
#include "hcp_tiny.h"
#include "bmlite_if_callbacks.h"
#ifdef DEBUG
#include <stdio.h>
#include <stdlib.h>
#define LOG_DEBUG(...) printf(__VA_ARGS__)
#else
#define LOG_DEBUG(...)
#endif
static uint32_t fpc_com_ack = FPC_BEP_ACK;
static fpc_bep_result_t _rx_link(HCP_comm_t *hcp_comm);
static fpc_bep_result_t _tx_link(HCP_comm_t *hcp_comm);
typedef struct {
uint16_t cmd;
uint16_t args_nr;
uint8_t args[];
} _HCP_cmd_t;
typedef struct {
uint16_t arg;
uint16_t size;
uint8_t pld[];
} _CMD_arg_t;
typedef struct {
uint16_t lnk_chn;
uint16_t lnk_size;
uint16_t t_size;
uint16_t t_seq_nr;
uint16_t t_seq_len;
_HCP_cmd_t t_pld;
} _HPC_pkt_t;
fpc_bep_result_t bmlite_init_cmd(HCP_comm_t *hcp_comm, uint16_t cmd, uint16_t arg_key)
{
fpc_bep_result_t bep_result;
_HCP_cmd_t *out = (_HCP_cmd_t *)hcp_comm->pkt_buffer;
out->cmd = cmd;
out->args_nr = 0;
hcp_comm->pkt_size = 4;
if(arg_key != ARG_NONE) {
bep_result = bmlite_add_arg(hcp_comm, arg_key, NULL, 0);
if(bep_result) {
bmlite_on_error(BMLITE_ERROR_SEND_CMD, bep_result);
return bep_result;
}
}
return FPC_BEP_RESULT_OK;
}
fpc_bep_result_t bmlite_add_arg(HCP_comm_t *hcp_comm, uint16_t arg, void *data, uint16_t size)
{
if(hcp_comm->pkt_size + 4 + size > hcp_comm->pkt_size_max) {
bmlite_on_error(BMLITE_ERROR_SEND_CMD, FPC_BEP_RESULT_NO_MEMORY);
return FPC_BEP_RESULT_NO_MEMORY;
}
((_HCP_cmd_t *)hcp_comm->pkt_buffer)->args_nr++;
_CMD_arg_t *args = (_CMD_arg_t *)(&hcp_comm->pkt_buffer[hcp_comm->pkt_size]);
args->arg = arg;
args->size = size;
if(size) {
memcpy(&args->pld, data, size);
}
hcp_comm->pkt_size += 4 + size;
return FPC_BEP_RESULT_OK;
}
fpc_bep_result_t bmlite_get_arg(HCP_comm_t *hcp_comm, uint16_t arg_type)
{
uint16_t i = 0;
uint8_t *buffer = hcp_comm->pkt_buffer;
uint16_t args_nr = ((_HCP_cmd_t *)(buffer))->args_nr;
uint8_t *pdata = (uint8_t *)&((_HCP_cmd_t *)(buffer))->args;
while (i < args_nr && (uint32_t)(pdata - buffer) <= hcp_comm->pkt_size) {
_CMD_arg_t *parg = (_CMD_arg_t *)pdata;
if(parg->arg == arg_type) {
hcp_comm->arg.size = parg->size;
hcp_comm->arg.data = parg->pld;
return FPC_BEP_RESULT_OK;
} else {
i++;
pdata += 4 + parg->size;
}
}
// Ignore missing ARG_RESULT because some command return result other way
// if (arg_type != ARG_RESULT) {
bmlite_on_error(BMLITE_ERROR_GET_ARG, FPC_BEP_RESULT_INVALID_ARGUMENT);
// }
return FPC_BEP_RESULT_INVALID_ARGUMENT;
}
fpc_bep_result_t bmlite_copy_arg(HCP_comm_t *hcp_comm, uint16_t arg_key, void *arg_data, uint16_t arg_data_length)
{
fpc_bep_result_t bep_result;
bep_result = bmlite_get_arg(hcp_comm, arg_key);
if(bep_result == FPC_BEP_RESULT_OK) {
if(arg_data == NULL) {
bmlite_on_error(BMLITE_ERROR_GET_ARG, FPC_BEP_RESULT_NO_MEMORY);
return FPC_BEP_RESULT_NO_MEMORY;
}
memcpy(arg_data, hcp_comm->arg.data, HCP_MIN(arg_data_length, hcp_comm->arg.size));
} else {
bmlite_on_error(BMLITE_ERROR_GET_ARG, FPC_BEP_RESULT_INVALID_ARGUMENT);
return FPC_BEP_RESULT_INVALID_ARGUMENT;
}
return bep_result;
}
fpc_bep_result_t bmlite_tranceive(HCP_comm_t *hcp_comm)
{
fpc_bep_result_t bep_result;
bep_result = bmlite_send(hcp_comm);
if (bep_result == FPC_BEP_RESULT_OK) {
bep_result = bmlite_receive(hcp_comm);
if (bmlite_get_arg(hcp_comm, ARG_RESULT) == FPC_BEP_RESULT_OK) {
hcp_comm->bep_result = *(int8_t*)hcp_comm->arg.data;
} else {
hcp_comm->bep_result = FPC_BEP_RESULT_OK;
}
}
return bep_result;
}
fpc_bep_result_t bmlite_receive(HCP_comm_t *hcp_comm)
{
fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK;
fpc_bep_result_t com_result = FPC_BEP_RESULT_OK;
uint16_t seq_nr = 0;
uint16_t seq_len = 1;
uint8_t *p = hcp_comm->pkt_buffer;
_HPC_pkt_t *pkt = (_HPC_pkt_t *)hcp_comm->txrx_buffer;
uint16_t buf_len = 0;
while(seq_nr < seq_len) {
bep_result = _rx_link(hcp_comm);
if (!bep_result) {
seq_nr = pkt->t_seq_nr;
seq_len = pkt->t_seq_len;
if(pkt->t_size != pkt->lnk_size - 6) {
com_result = FPC_BEP_RESULT_IO_ERROR;
continue;
}
if(buf_len + pkt->t_size < hcp_comm->pkt_size_max) {
memcpy(p, &pkt->t_pld, pkt->t_size);
p += pkt->t_size;
buf_len += pkt->t_size;
} else {
com_result = FPC_BEP_RESULT_NO_MEMORY;
}
#ifdef DEBUG
if (seq_len > 1)
LOG_DEBUG("Received data chunk %d of %d\n", seq_nr, seq_len);
#endif
} else {
bmlite_on_error(BMLITE_ERROR_SEND_CMD, bep_result);
return bep_result;
}
}
hcp_comm->pkt_size = buf_len;
if(com_result != FPC_BEP_RESULT_OK) {
bmlite_on_error(BMLITE_ERROR_SEND_CMD, com_result);
}
return com_result;
}
static fpc_bep_result_t _rx_link(HCP_comm_t *hcp_comm)
{
// Get size, msg and CRC
uint16_t result = hcp_comm->read(4, hcp_comm->txrx_buffer, hcp_comm->phy_rx_timeout, NULL);
_HPC_pkt_t *pkt = (_HPC_pkt_t *)hcp_comm->txrx_buffer;
uint16_t size;
if (result) {
LOG_DEBUG("Timed out waiting for response.\n");
return result;
}
size = pkt->lnk_size;
// Check if size plus header and crc is larger than max package size.
if (MTU < size + 8) {
// LOG_DEBUG("S: Invalid size %d, larger than MTU %d.\n", size, MTU);
bmlite_on_error(BMLITE_ERROR_SEND_CMD, FPC_BEP_RESULT_IO_ERROR);
return FPC_BEP_RESULT_IO_ERROR;
}
hcp_comm->read(size + 4, hcp_comm->txrx_buffer + 4, 100, NULL);
uint32_t crc = *(uint32_t *)(hcp_comm->txrx_buffer + 4 + size);
uint32_t crc_calc = fpc_crc(0, hcp_comm->txrx_buffer+4, size);
if (crc_calc != crc) {
LOG_DEBUG("CRC mismatch. Calculated %08X, received %08X\n", crc_calc, crc);
bmlite_on_error(BMLITE_ERROR_SEND_CMD, FPC_BEP_RESULT_IO_ERROR);
return FPC_BEP_RESULT_IO_ERROR;
}
// Send Ack
hcp_comm->write(4, (uint8_t *)&fpc_com_ack, 0, NULL);
return FPC_BEP_RESULT_OK;
}
fpc_bep_result_t bmlite_send(HCP_comm_t *hcp_comm)
{
uint16_t seq_nr = 1;
fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK;
uint16_t data_left = hcp_comm->pkt_size;
uint8_t *p = hcp_comm->pkt_buffer;
_HPC_pkt_t *phy_frm = (_HPC_pkt_t *)hcp_comm->txrx_buffer;
// Application MTU size is PHY MTU - (Transport and Link overhead)
uint16_t app_mtu = MTU - 6 - 8;
// Calculate sequence length
uint16_t seq_len = (data_left / app_mtu) + 1;
phy_frm->lnk_chn = 0;
phy_frm->t_seq_len = seq_len;
for (seq_nr = 1; seq_nr <= seq_len && !bep_result; seq_nr++) {
phy_frm->t_seq_nr = seq_nr;
if (data_left < app_mtu) {
phy_frm->t_size = data_left;
} else {
phy_frm->t_size = app_mtu;
}
memcpy(&phy_frm->t_pld, p, phy_frm->t_size);
phy_frm->lnk_size = phy_frm->t_size + 6;
p += phy_frm->t_size;
data_left -= phy_frm->t_size;
bep_result = _tx_link(hcp_comm);
}
if(bep_result) {
bmlite_on_error(BMLITE_ERROR_SEND_CMD, bep_result);
}
return bep_result;
}
fpc_bep_result_t _tx_link(HCP_comm_t *hcp_comm)
{
fpc_bep_result_t bep_result;
_HPC_pkt_t *pkt = (_HPC_pkt_t *)hcp_comm->txrx_buffer;
uint32_t crc_calc = fpc_crc(0, &pkt->t_size, pkt->lnk_size);
*(uint32_t *)(hcp_comm->txrx_buffer + pkt->lnk_size + 4) = crc_calc;
uint16_t size = pkt->lnk_size + 8;
bep_result = hcp_comm->write(size, hcp_comm->txrx_buffer, 0, NULL);
// Wait for ACK
uint32_t ack;
bep_result = hcp_comm->read(4, (uint8_t *)&ack, 500, NULL);
if (bep_result == FPC_BEP_RESULT_TIMEOUT) {
LOG_DEBUG("ASK read timeout\n");
bmlite_on_error(BMLITE_ERROR_SEND_CMD, FPC_BEP_RESULT_TIMEOUT);
return FPC_BEP_RESULT_IO_ERROR;
}
if(ack != fpc_com_ack) {
return FPC_BEP_RESULT_IO_ERROR;
}
return FPC_BEP_RESULT_OK;
}

View File

@ -27,11 +27,25 @@
#include <unistd.h> #include <unistd.h>
#include <string.h> #include <string.h>
#include "bep_host_if.h" #include "bmlite_if.h"
#include "com_common.h" #include "hcp_tiny.h"
#include "platform.h" #include "platform.h"
#include "bmlite_hal.h" #include "bmlite_hal.h"
#define DATA_BUFFER_SIZE (1024*5)
static uint8_t hcp_txrx_buffer[MTU];
static uint8_t hcp_data_buffer[DATA_BUFFER_SIZE];
static HCP_comm_t hcp_chain = {
.read = platform_bmlite_receive,
.write = platform_bmlite_send,
.pkt_buffer = hcp_data_buffer,
.txrx_buffer = hcp_txrx_buffer,
.pkt_size = 0,
.pkt_size_max = sizeof(hcp_data_buffer),
.phy_rx_timeout = 2000,
};
void bmlite_on_error(bmlite_error_t error, int32_t value) void bmlite_on_error(bmlite_error_t error, int32_t value)
{ {
if(value != FPC_BEP_RESULT_TIMEOUT) { if(value != FPC_BEP_RESULT_TIMEOUT) {
@ -76,15 +90,8 @@ void bmlite_on_identify_start()
int main (int argc, char **argv) int main (int argc, char **argv)
{ {
int baudrate = 4000000; int baudrate = 4000000;
uint8_t buffer[512];
uint16_t size[2] = { 256, 256 };
fpc_com_chain_t hcp_chain;
platform_init(baudrate); platform_init(baudrate);
init_com_chain(&hcp_chain, buffer, size, NULL);
hcp_chain.channel = 1;
{ {
char version[100]; char version[100];
uint16_t template_id; uint16_t template_id;
@ -104,15 +111,19 @@ int main (int argc, char **argv)
} else if (btn_time < 5000) { } else if (btn_time < 5000) {
// Enroll // Enroll
res = bep_enroll_finger(&hcp_chain); res = bep_enroll_finger(&hcp_chain);
res = bep_save_template(&hcp_chain, current_id++); res = bep_template_save(&hcp_chain, current_id++);
} else { } else {
// Erase All templates // Erase All templates
hal_set_leds(BMLITE_LED_STATUS_DELETE_TEMPLATES, true); hal_set_leds(BMLITE_LED_STATUS_DELETE_TEMPLATES, true);
res = bep_delete_template(&hcp_chain, REMOVE_ID_ALL_TEMPLATES); res = bep_template_remove_all(&hcp_chain);
current_id = 0;
} }
res = bep_identify_finger(&hcp_chain, &template_id, &match); res = bep_identify_finger(&hcp_chain, 0, &template_id, &match);
if (res != FPC_BEP_RESULT_OK) if (res == FPC_BEP_RESULT_TIMEOUT) {
platform_bmlite_reset();
} else if (res != FPC_BEP_RESULT_OK) {
continue; continue;
}
hal_set_leds(BMLITE_LED_STATUS_MATCH, match); hal_set_leds(BMLITE_LED_STATUS_MATCH, match);
} }
} }

View File

@ -20,7 +20,7 @@
*/ */
#include "fpc_com_result.h" #include "fpc_bep_types.h"
#include "platform.h" #include "platform.h"
#include "bmlite_hal.h" #include "bmlite_hal.h"
@ -41,7 +41,7 @@ void platform_bmlite_reset(void)
hal_timebase_busy_wait(100); hal_timebase_busy_wait(100);
} }
fpc_com_result_t platform_bmlite_send(uint16_t size, const uint8_t *data, uint32_t timeout, fpc_bep_result_t platform_bmlite_send(uint16_t size, const uint8_t *data, uint32_t timeout,
void *session) void *session)
{ {
uint8_t buff[size]; uint8_t buff[size];
@ -49,16 +49,20 @@ fpc_com_result_t platform_bmlite_send(uint16_t size, const uint8_t *data, uint32
return hal_bmlite_spi_write_read((uint8_t *)data, buff, size, false); return hal_bmlite_spi_write_read((uint8_t *)data, buff, size, false);
} }
fpc_com_result_t platform_bmlite_receive(uint16_t size, uint8_t *data, uint32_t timeout, fpc_bep_result_t platform_bmlite_receive(uint16_t size, uint8_t *data, uint32_t timeout,
void *session) void *session)
{ {
volatile uint32_t start_time = hal_timebase_get_tick(); volatile uint32_t start_time = hal_timebase_get_tick();
volatile uint32_t curr_time = start_time; volatile uint32_t curr_time = start_time;
// Wait for BM_Lite Ready for timeout or indefinitely if timeout is 0
while (!hal_bmlite_get_status() && while (!hal_bmlite_get_status() &&
(curr_time = hal_timebase_get_tick()) - start_time < timeout) { (!timeout || (curr_time = hal_timebase_get_tick()) - start_time < timeout)) {
if(platform_check_button_pressed()) {
return FPC_BEP_RESULT_TIMEOUT;
}
} }
if(curr_time - start_time >= timeout) { if(timeout && curr_time - start_time >= timeout) {
return FPC_COM_RESULT_TIMEOUT; return FPC_BEP_RESULT_TIMEOUT;
} }
uint8_t buff[size]; uint8_t buff[size];

View File

@ -121,3 +121,9 @@ uint32_t platform_get_button_press_time()
button_pressed_time = 0; button_pressed_time = 0;
return time; return time;
} }
uint32_t platform_check_button_pressed()
{
uint32_t time = button_pressed_time;
return time;
}

View File

@ -17,8 +17,8 @@ Platform-independent interface implemented in [platform.c](BMLite_example/src/pl
| :-------- | :-------- | | :-------- | :-------- |
| bool **platform_init**(uint32_t speed_hz) | Initilalizes hardware | | bool **platform_init**(uint32_t speed_hz) | Initilalizes hardware |
| void **platform_bmlite_reset**(void) | Implements BM-Lite HW Reset | | void **platform_bmlite_reset**(void) | Implements BM-Lite HW Reset |
| fpc_com_result_t **platform_bmlite_send**(uint16_t size, const uint8_t *data, uint32_t timeout, void *session) | Send data packet to FPC BM-LIte (session parameter is for compatibility and can be safely ignored) | | fpc_bep_result_t**platform_bmlite_send**(uint16_t size, const uint8_t *data, uint32_t timeout, void *session) | Send data packet to FPC BM-LIte (session parameter is for compatibility and can be safely ignored) |
| fpc_com_result_t **platform_bmlite_receive**(uint16_t size, uint8_t *data, uint32_t timeout, void *session) | Receive data packet from FPC BM-LIte (session parameter is for compatibility and can be safely ignored) | | fpc_bep_result_t**platform_bmlite_receive**(uint16_t size, uint8_t *data, uint32_t timeout, void *session) | Receive data packet from FPC BM-LIte (session parameter is for compatibility and can be safely ignored) |
Currently **platform_bmlite_send()** and **platform_bmlite_receive()** are implemented for SPI interface. For UART interface there is no need to wait **IRQ** pin ready. However because in UART mode there is no signal from FPC-BM-LIte that it will send data, I would recommend to use UART interrupt or DMA to receive data from UART and store it to a separate buffer and read data in **platform_bmlite_receive()** from that buffer. Activation UART data reading only inside **platform_bmlite_receive()** could lead to loosing some incoming data and causing HCP protocol errors. Currently **platform_bmlite_send()** and **platform_bmlite_receive()** are implemented for SPI interface. For UART interface there is no need to wait **IRQ** pin ready. However because in UART mode there is no signal from FPC-BM-LIte that it will send data, I would recommend to use UART interrupt or DMA to receive data from UART and store it to a separate buffer and read data in **platform_bmlite_receive()** from that buffer. Activation UART data reading only inside **platform_bmlite_receive()** could lead to loosing some incoming data and causing HCP protocol errors.

View File

@ -1,174 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -1,247 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Genererad av Microsoft Visio, SVG-export hcp.svg Command -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="7.20333in" height="3.1672in"
viewBox="0 0 518.64 228.038" xml:space="preserve" color-interpolation-filters="sRGB" class="st6">
<v:documentProperties v:langID="1053" v:metric="true" v:viewMarkup="false">
<v:userDefs>
<v:ud v:nameU="msvNoAutoConnect" v:val="VT0(1):26"/>
</v:userDefs>
</v:documentProperties>
<style type="text/css">
<![CDATA[
.st1 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
.st2 {fill:#f9c499;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st3 {fill:#000000;font-family:Calibri Light;font-size:0.916672em}
.st4 {fill:#fbd7bb;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st5 {font-size:1em}
.st6 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
]]>
</style>
<g v:mID="10" v:index="3" v:groupContext="foregroundPage">
<title>HCP 2.0</title>
<v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394"
v:shadowOffsetY="-8.50394"/>
<v:layer v:name="Koppling" v:index="0"/>
<g id="shape1054-1" v:mID="1054" v:groupContext="shape" transform="translate(18.375,323.765) scale(1,-1)">
<title>Side brace</title>
<v:userDefs>
<v:ud v:nameU="TxtW" v:val="VT0(0.55555555555556):29"/>
<v:ud v:nameU="TxtA" v:val="VT0(1.5707963267949):37"/>
<v:ud v:nameU="TxtAState" v:val="VT0(0):26"/>
<v:ud v:nameU="TxtWState" v:val="VT0(0):26"/>
<v:ud v:nameU="MaxRadius" v:val="VT0(0.19685039370079):24"/>
<v:ud v:nameU="PosCH1" v:prompt="Constrains X postion of Control Handle #1" v:val="VT0(0):26"/>
<v:ud v:nameU="PosCH2" v:prompt="Constrains Y postion of Control Handle #2" v:val="VT0(0):26"/>
<v:ud v:nameU="Scale" v:val="VT0(1):26"/>
<v:ud v:nameU="AntiScale" v:val="VT0(1):26"/>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
<v:ud v:nameU="TxtW" v:prompt="" v:val="VT0(0.76388888888889):29"/>
<v:ud v:nameU="MaxRadius" v:prompt="" v:val="VT0(0.40135476746623):1"/>
</v:userDefs>
<path d="M0 199.14 L0 209.61 A18.4249 18.4249 -180 0 0 18.43 228.04 L318.9 228.04 A18.4249 18.4249 0 0 1 337.32 246.46
A18.4249 18.4249 0 0 1 355.75 228.04 L463.46 228.04 A18.4249 18.4249 -180 0 0 481.89 209.61 L481.89 199.14"
class="st1"/>
</g>
<g id="group1056-4" transform="translate(18.375,-18.375)" v:mID="1056" v:groupContext="group">
<title>Ark.1056</title>
<g id="shape1020-5" v:mID="1020" v:groupContext="shape" transform="translate(0,-56.6929)">
<title>Ark.1020</title>
<desc>Argument 1</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="80.315" cy="213.865" width="160.63" height="28.3465"/>
<rect x="0" y="199.692" width="160.63" height="28.3465" class="st2"/>
<text x="54.12" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Argument 1</text> </g>
<g id="shape1028-8" v:mID="1028" v:groupContext="shape" transform="translate(53.5433,-2.30713E-06)">
<title>Ark.1028</title>
<desc>2 Bytes</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="10.72" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>2 Bytes</text> </g>
<g id="shape1030-11" v:mID="1030" v:groupContext="shape" transform="translate(107.087,-2.30713E-06)">
<title>Ark.1030</title>
<desc>Size Bytes</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="4.92" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Size Bytes</text> </g>
<g id="shape1031-14" v:mID="1031" v:groupContext="shape" transform="translate(2.87601E-14,-2.30713E-06)">
<title>Ark.1031</title>
<desc>2 Bytes</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="10.72" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>2 Bytes</text> </g>
<g id="shape1032-17" v:mID="1032" v:groupContext="shape" transform="translate(53.5433,-28.3465)">
<title>Ark.1032</title>
<desc>Data Size</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="6.62" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Data Size</text> </g>
<g id="shape1033-20" v:mID="1033" v:groupContext="shape" transform="translate(107.087,-28.3465)">
<title>Ark.1033</title>
<desc>Data</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="16.45" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Data</text> </g>
<g id="shape1034-23" v:mID="1034" v:groupContext="shape" transform="translate(0,-28.3465)">
<title>Ark.1034</title>
<desc>Key</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="18.85" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Key</text> </g>
<g id="shape1035-26" v:mID="1035" v:groupContext="shape" transform="translate(160.63,-56.6929)">
<title>Ark.1035</title>
<desc>Argument 2</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="80.315" cy="213.865" width="160.63" height="28.3465"/>
<rect x="0" y="199.692" width="160.63" height="28.3465" class="st2"/>
<text x="54.12" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Argument 2</text> </g>
<g id="shape1036-29" v:mID="1036" v:groupContext="shape" transform="translate(214.173,0)">
<title>Ark.1036</title>
<desc>2 Bytes</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="10.72" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>2 Bytes</text> </g>
<g id="shape1037-32" v:mID="1037" v:groupContext="shape" transform="translate(267.717,0)">
<title>Ark.1037</title>
<desc>Size Bytes</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="4.92" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Size Bytes</text> </g>
<g id="shape1038-35" v:mID="1038" v:groupContext="shape" transform="translate(160.63,0)">
<title>Ark.1038</title>
<desc>2 Bytes</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="10.72" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>2 Bytes</text> </g>
<g id="shape1039-38" v:mID="1039" v:groupContext="shape" transform="translate(214.173,-28.3465)">
<title>Ark.1039</title>
<desc>Data Size</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="6.62" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Data Size</text> </g>
<g id="shape1040-41" v:mID="1040" v:groupContext="shape" transform="translate(267.717,-28.3465)">
<title>Ark.1040</title>
<desc>Data</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="16.45" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Data</text> </g>
<g id="shape1041-44" v:mID="1041" v:groupContext="shape" transform="translate(160.63,-28.3465)">
<title>Ark.1041</title>
<desc>Key</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="18.85" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Key</text> </g>
<g id="shape1042-47" v:mID="1042" v:groupContext="shape" transform="translate(321.26,-56.6929)">
<title>Ark.1042</title>
<desc>Argument N</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="80.315" cy="213.865" width="160.63" height="28.3465"/>
<rect x="0" y="199.692" width="160.63" height="28.3465" class="st2"/>
<text x="53.4" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Argument N</text> </g>
<g id="shape1043-50" v:mID="1043" v:groupContext="shape" transform="translate(374.803,0)">
<title>Ark.1043</title>
<desc>2 Bytes</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="10.72" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>2 Bytes</text> </g>
<g id="shape1044-53" v:mID="1044" v:groupContext="shape" transform="translate(428.346,0)">
<title>Ark.1044</title>
<desc>Size Bytes</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="4.92" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Size Bytes</text> </g>
<g id="shape1045-56" v:mID="1045" v:groupContext="shape" transform="translate(321.26,0)">
<title>Ark.1045</title>
<desc>2 Bytes</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="10.72" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>2 Bytes</text> </g>
<g id="shape1046-59" v:mID="1046" v:groupContext="shape" transform="translate(374.803,-28.3465)">
<title>Ark.1046</title>
<desc>Data Size</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="6.62" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Data Size</text> </g>
<g id="shape1047-62" v:mID="1047" v:groupContext="shape" transform="translate(428.346,-28.3465)">
<title>Ark.1047</title>
<desc>Data</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="16.45" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Data</text> </g>
<g id="shape1048-65" v:mID="1048" v:groupContext="shape" transform="translate(321.26,-28.3465)">
<title>Ark.1048</title>
<desc>Key</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="26.7717" cy="213.865" width="53.55" height="28.3465"/>
<rect x="0" y="199.692" width="53.5433" height="28.3465" class="st4"/>
<text x="18.85" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Key</text> </g>
</g>
<g id="group1057-68" transform="translate(78.8947,-152.97)" v:mID="1057" v:groupContext="group">
<title>Ark.1057</title>
<g id="shape1000-69" v:mID="1000" v:groupContext="shape">
<title>Ark.1000</title>
<desc>2 Bytes</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="42.5197" cy="213.865" width="85.04" height="28.3465"/>
<rect x="0" y="199.692" width="85.0394" height="28.3465" class="st4"/>
<text x="26.47" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>2 Bytes</text> </g>
<g id="shape1001-72" v:mID="1001" v:groupContext="shape" transform="translate(85.0394,0)">
<title>Ark.1001</title>
<desc>2 Byte</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="42.5197" cy="213.865" width="85.04" height="28.3465"/>
<rect x="0" y="199.692" width="85.0394" height="28.3465" class="st4"/>
<text x="28.6" y="217.17" class="st3" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>2<tspan
class="st5" v:langID="1053"> </tspan><tspan class="st5" v:langID="1053">Byte</tspan></text> </g>
<g id="shape1003-77" v:mID="1003" v:groupContext="shape" transform="translate(3.19744E-14,-28.3465)">
<title>Ark.1003</title>
<desc>Command</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="42.5197" cy="213.865" width="85.04" height="28.3465"/>
<rect x="0" y="199.692" width="85.0394" height="28.3465" class="st2"/>
<text x="19.7" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Command</text> </g>
<g id="shape1004-80" v:mID="1004" v:groupContext="shape" transform="translate(85.0394,-28.3465)">
<title>Ark.1004</title>
<desc>Number of Arguments</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="42.5197" cy="213.865" width="85.04" height="28.3465"/>
<rect x="0" y="199.692" width="85.0394" height="28.3465" class="st2"/>
<text x="18.58" y="210.57" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Number of <tspan
x="18.23" dy="1.2em" class="st5">Arguments</tspan></text> </g>
<g id="shape1007-84" v:mID="1007" v:groupContext="shape" transform="translate(170.079,-28.3465)">
<title>Ark.1007</title>
<desc>Payload</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="106.299" cy="213.865" width="212.6" height="28.3465"/>
<rect x="0" y="199.692" width="212.598" height="28.3465" class="st2"/>
<text x="88.96" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Payload</text> </g>
<g id="shape1055-87" v:mID="1055" v:groupContext="shape" transform="translate(170.079,0)">
<title>Ark.1055</title>
<desc>0-65526 (16363 for TLS) Bytes</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="106.299" cy="213.865" width="212.6" height="28.3465"/>
<rect x="0" y="199.692" width="212.598" height="28.3465" class="st4"/>
<text x="39.81" y="217.17" class="st3" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>0-65526 (16363 for TLS) Bytes</text> </g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 16 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -1,236 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Genererad av Microsoft Visio, SVG-export stack.svg BEP Stack -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="9.41488in" height="2.47892in"
viewBox="0 0 677.871 178.482" xml:space="preserve" color-interpolation-filters="sRGB" class="st8">
<v:documentProperties v:langID="1053" v:metric="true" v:viewMarkup="false">
<v:userDefs>
<v:ud v:nameU="msvNoAutoConnect" v:val="VT0(1):26"/>
</v:userDefs>
</v:documentProperties>
<style type="text/css">
<![CDATA[
.st1 {stroke:#7c7c7c;stroke-width:0.25}
.st2 {fill:#000000;font-family:Calibri Light;font-size:0.916672em}
.st3 {fill:#ffd965;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st4 {fill:#92cddc;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st5 {fill:#f9c499;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st6 {fill:#c4d6a0;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st7 {fill:#bfbfbf;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st8 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
]]>
</style>
<g v:mID="5" v:index="2" v:groupContext="foregroundPage">
<title>Layer Structure</title>
<v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394"
v:shadowOffsetY="-8.50394"/>
<v:layer v:name="Koppling" v:index="0"/>
<g id="shape23-1" v:mID="23" v:groupContext="shape" transform="translate(364.302,131.761) rotate(-90) scale(-1,1)">
<title>Side brace.23</title>
<desc>Physical Layer</desc>
<v:userDefs>
<v:ud v:nameU="TxtW" v:val="VT0(0.55555555555556):29"/>
<v:ud v:nameU="TxtA" v:val="VT0(1.5707963267949):37"/>
<v:ud v:nameU="TxtAState" v:val="VT0(0):26"/>
<v:ud v:nameU="TxtWState" v:val="VT0(0):26"/>
<v:ud v:nameU="MaxRadius" v:val="VT0(0.19685039370079):24"/>
<v:ud v:nameU="PosCH1" v:prompt="Constrains X postion of Control Handle #1" v:val="VT0(0):26"/>
<v:ud v:nameU="PosCH2" v:prompt="Constrains Y postion of Control Handle #2" v:val="VT0(0):26"/>
<v:ud v:nameU="Scale" v:val="VT0(1):26"/>
<v:ud v:nameU="AntiScale" v:val="VT0(1):26"/>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
<v:ud v:nameU="TxtW" v:prompt="" v:val="VT0(1.5277777777778):3"/>
<v:ud v:nameU="TxtWState" v:prompt="" v:val="VT0(2):26"/>
<v:ud v:nameU="MaxRadius" v:prompt="" v:val="VT0(0.098425196850393):1"/>
</v:userDefs>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197" v:verticalAlign="0"/>
<v:textRect cx="14.1607" cy="240.563" width="110.01" height="21.204" transform="rotate(90)"/>
<path d="M0 135.96 L0 171.4 A7.08022 7.08022 -180 0 0 7.08 178.48 A7.08022 7.08022 0 0 1 14.16 185.56 A7.08022 7.08022
0 0 1 21.24 178.48 L21.27 178.48 A7.08022 7.08022 -180 0 0 28.35 171.4 L28.35 135.96" class="st1"/>
<text x="189.56" y="17.46" transform="rotate(-90) scale(-1,1)" class="st2" v:langID="1053"><v:paragraph/><v:tabList/>Physical Layer</text> </g>
<g id="shape24-5" v:mID="24" v:groupContext="shape" transform="translate(364.302,103.414) rotate(-90) scale(-1,1)">
<title>Side brace.24</title>
<desc>Link Layer</desc>
<v:userDefs>
<v:ud v:nameU="TxtW" v:val="VT0(0.55555555555556):29"/>
<v:ud v:nameU="TxtA" v:val="VT0(1.5707963267949):37"/>
<v:ud v:nameU="TxtAState" v:val="VT0(0):26"/>
<v:ud v:nameU="TxtWState" v:val="VT0(0):26"/>
<v:ud v:nameU="MaxRadius" v:val="VT0(0.19685039370079):24"/>
<v:ud v:nameU="PosCH1" v:prompt="Constrains X postion of Control Handle #1" v:val="VT0(0):26"/>
<v:ud v:nameU="PosCH2" v:prompt="Constrains Y postion of Control Handle #2" v:val="VT0(0):26"/>
<v:ud v:nameU="Scale" v:val="VT0(1):26"/>
<v:ud v:nameU="AntiScale" v:val="VT0(1):26"/>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
<v:ud v:nameU="TxtW" v:prompt="" v:val="VT0(1.5277777777778):3"/>
<v:ud v:nameU="TxtWState" v:prompt="" v:val="VT0(2):26"/>
<v:ud v:nameU="MaxRadius" v:prompt="" v:val="VT0(0.098425196850393):1"/>
</v:userDefs>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197" v:verticalAlign="0"/>
<v:textRect cx="14.1607" cy="240.563" width="110.01" height="21.204" transform="rotate(90)"/>
<path d="M0 135.96 L0 171.4 A7.08022 7.08022 -180 0 0 7.08 178.48 A7.08022 7.08022 0 0 1 14.16 185.56 A7.08022 7.08022
0 0 1 21.24 178.48 L21.27 178.48 A7.08022 7.08022 -180 0 0 28.35 171.4 L28.35 135.96" class="st1"/>
<text x="189.56" y="17.46" transform="rotate(-90) scale(-1,1)" class="st2" v:langID="1053"><v:paragraph/><v:tabList/>Link Layer</text> </g>
<g id="shape25-9" v:mID="25" v:groupContext="shape" transform="translate(364.302,75.0679) rotate(-90) scale(-1,1)">
<title>Side brace.25</title>
<desc>Transport Layer</desc>
<v:userDefs>
<v:ud v:nameU="TxtW" v:val="VT0(0.55555555555556):29"/>
<v:ud v:nameU="TxtA" v:val="VT0(1.5707963267949):37"/>
<v:ud v:nameU="TxtAState" v:val="VT0(0):26"/>
<v:ud v:nameU="TxtWState" v:val="VT0(0):26"/>
<v:ud v:nameU="MaxRadius" v:val="VT0(0.19685039370079):24"/>
<v:ud v:nameU="PosCH1" v:prompt="Constrains X postion of Control Handle #1" v:val="VT0(0):26"/>
<v:ud v:nameU="PosCH2" v:prompt="Constrains Y postion of Control Handle #2" v:val="VT0(0):26"/>
<v:ud v:nameU="Scale" v:val="VT0(1):26"/>
<v:ud v:nameU="AntiScale" v:val="VT0(1):26"/>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
<v:ud v:nameU="TxtW" v:prompt="" v:val="VT0(1.5277777777778):3"/>
<v:ud v:nameU="TxtWState" v:prompt="" v:val="VT0(2):26"/>
<v:ud v:nameU="MaxRadius" v:prompt="" v:val="VT0(0.098425196850393):1"/>
</v:userDefs>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197" v:verticalAlign="0"/>
<v:textRect cx="14.1607" cy="240.563" width="110.01" height="21.204" transform="rotate(90)"/>
<path d="M0 135.96 L0 171.4 A7.08022 7.08022 -180 0 0 7.08 178.48 A7.08022 7.08022 0 0 1 14.16 185.56 A7.08022 7.08022
0 0 1 21.24 178.48 L21.27 178.48 A7.08022 7.08022 -180 0 0 28.35 171.4 L28.35 135.96" class="st1"/>
<text x="189.56" y="17.46" transform="rotate(-90) scale(-1,1)" class="st2" v:langID="1053"><v:paragraph/><v:tabList/>Transport Layer</text> </g>
<g id="shape26-13" v:mID="26" v:groupContext="shape" transform="translate(364.302,46.7215) rotate(-90) scale(-1,1)">
<title>Side brace.26</title>
<desc>Application Layer</desc>
<v:userDefs>
<v:ud v:nameU="TxtW" v:val="VT0(0.55555555555556):29"/>
<v:ud v:nameU="TxtA" v:val="VT0(1.5707963267949):37"/>
<v:ud v:nameU="TxtAState" v:val="VT0(0):26"/>
<v:ud v:nameU="TxtWState" v:val="VT0(0):26"/>
<v:ud v:nameU="MaxRadius" v:val="VT0(0.19685039370079):24"/>
<v:ud v:nameU="PosCH1" v:prompt="Constrains X postion of Control Handle #1" v:val="VT0(0):26"/>
<v:ud v:nameU="PosCH2" v:prompt="Constrains Y postion of Control Handle #2" v:val="VT0(0):26"/>
<v:ud v:nameU="Scale" v:val="VT0(1):26"/>
<v:ud v:nameU="AntiScale" v:val="VT0(1):26"/>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
<v:ud v:nameU="TxtW" v:prompt="" v:val="VT0(1.5277777777778):3"/>
<v:ud v:nameU="TxtWState" v:prompt="" v:val="VT0(2):26"/>
<v:ud v:nameU="MaxRadius" v:prompt="" v:val="VT0(0.098425196850393):1"/>
</v:userDefs>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197" v:verticalAlign="0"/>
<v:textRect cx="14.1732" cy="240.569" width="110.01" height="21.204" transform="rotate(90)"/>
<path d="M0 79.24 L0 171.4 A7.0865 7.0865 -180 0 0 7.09 178.48 A7.0865 7.0865 0 0 1 14.17 185.57 A7.0865 7.0865 0 0 1
21.26 178.48 A7.0865 7.0865 -180 0 0 28.35 171.4 L28.35 79.24" class="st1"/>
<text x="189.57" y="17.47" transform="rotate(-90) scale(-1,1)" class="st2" v:langID="1053"><v:paragraph/><v:tabList/>Application Layer</text> </g>
<g id="group32-17" transform="translate(131.761,-75.0679)" v:mID="32" v:groupContext="group">
<title>Ark.32</title>
<g id="shape6-18" v:mID="6" v:groupContext="shape" transform="translate(113.386,0)">
<title>Ark.6</title>
<desc>Seq Len</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="28.3465" cy="164.309" width="56.7" height="28.3465"/>
<rect x="0" y="150.136" width="56.6929" height="28.3465" class="st3"/>
<text x="11.16" y="167.61" class="st2" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Seq Len</text> </g>
<g id="shape7-21" v:mID="7" v:groupContext="shape" transform="translate(170.079,0)">
<title>Ark.7</title>
<desc>Payload</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="70.8661" cy="164.309" width="141.74" height="28.3465"/>
<rect x="0" y="150.136" width="141.732" height="28.3465" class="st3"/>
<text x="53.53" y="167.61" class="st2" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Payload</text> </g>
<g id="shape30-24" v:mID="30" v:groupContext="shape" transform="translate(56.6929,0)">
<title>Ark.30</title>
<desc>Seq Nr</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="28.3465" cy="164.309" width="56.7" height="28.3465"/>
<rect x="0" y="150.136" width="56.6929" height="28.3465" class="st3"/>
<text x="13.63" y="167.61" class="st2" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Seq Nr</text> </g>
<g id="shape31-27" v:mID="31" v:groupContext="shape">
<title>Ark.31</title>
<desc>Size</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="28.3465" cy="164.309" width="56.7" height="28.3465"/>
<rect x="0" y="150.136" width="56.6929" height="28.3465" class="st3"/>
<text x="19.76" y="167.61" class="st2" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Size</text> </g>
</g>
<g id="group33-30" transform="translate(18.375,-46.7215)" v:mID="33" v:groupContext="group">
<title>Ark.33</title>
<g id="shape3-31" v:mID="3" v:groupContext="shape" transform="translate(56.687,0)">
<title>Ark.3</title>
<desc>Size</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="28.3435" cy="164.322" width="56.69" height="28.3214"/>
<rect x="0" y="150.161" width="56.687" height="28.3214" class="st4"/>
<text x="19.76" y="167.62" class="st2" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Size</text> </g>
<g id="shape4-34" v:mID="4" v:groupContext="shape" transform="translate(113.374,0)">
<title>Ark.4</title>
<desc>Payload</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="155.889" cy="164.322" width="311.78" height="28.3214"/>
<rect x="0" y="150.161" width="311.779" height="28.3214" class="st4"/>
<text x="138.55" y="167.62" class="st2" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Payload</text> </g>
<g id="shape5-37" v:mID="5" v:groupContext="shape" transform="translate(425.153,0)">
<title>Ark.5</title>
<desc>CRC</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="28.3435" cy="164.322" width="56.69" height="28.3214"/>
<rect x="0" y="150.161" width="56.687" height="28.3214" class="st4"/>
<text x="19.53" y="167.62" class="st2" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>CRC</text> </g>
<g id="shape29-40" v:mID="29" v:groupContext="shape" transform="translate(0,-1.21527E-07)">
<title>Ark.29</title>
<desc>Channel</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="28.3435" cy="164.322" width="56.69" height="28.3214"/>
<rect x="0" y="150.161" width="56.687" height="28.3214" class="st4"/>
<text x="10.31" y="167.62" class="st2" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Channel</text> </g>
</g>
<g id="shape34-43" v:mID="34" v:groupContext="shape" transform="translate(301.84,-131.761)">
<title>Ark.34</title>
<desc>HCP</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="70.8661" cy="164.309" width="141.74" height="28.3465"/>
<rect x="0" y="150.136" width="141.732" height="28.3465" class="st5"/>
<text x="61.72" y="167.61" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>HCP</text> </g>
<g id="shape35-46" v:mID="35" v:groupContext="shape" transform="translate(364.302,18.375) rotate(-90) scale(-1,1)">
<title>Side brace.35</title>
<desc>HCP</desc>
<v:userDefs>
<v:ud v:nameU="TxtW" v:val="VT0(0.55555555555556):29"/>
<v:ud v:nameU="TxtA" v:val="VT0(1.5707963267949):37"/>
<v:ud v:nameU="TxtAState" v:val="VT0(0):26"/>
<v:ud v:nameU="TxtWState" v:val="VT0(0):26"/>
<v:ud v:nameU="MaxRadius" v:val="VT0(0.19685039370079):24"/>
<v:ud v:nameU="PosCH1" v:prompt="Constrains X postion of Control Handle #1" v:val="VT0(0):26"/>
<v:ud v:nameU="PosCH2" v:prompt="Constrains Y postion of Control Handle #2" v:val="VT0(0):26"/>
<v:ud v:nameU="Scale" v:val="VT0(1):26"/>
<v:ud v:nameU="AntiScale" v:val="VT0(1):26"/>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
<v:ud v:nameU="TxtW" v:prompt="" v:val="VT0(1.5277777777778):3"/>
<v:ud v:nameU="TxtWState" v:prompt="" v:val="VT0(2):26"/>
<v:ud v:nameU="MaxRadius" v:prompt="" v:val="VT0(0.098425196850393):1"/>
</v:userDefs>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197" v:verticalAlign="0"/>
<v:textRect cx="14.1732" cy="240.569" width="110.01" height="21.204" transform="rotate(90)"/>
<path d="M0 79.24 L0 171.4 A7.0865 7.0865 -180 0 0 7.09 178.48 A7.0865 7.0865 0 0 1 14.17 185.57 A7.0865 7.0865 0 0 1
21.26 178.48 A7.0865 7.0865 -180 0 0 28.35 171.4 L28.35 79.24" class="st1"/>
<text x="189.57" y="17.47" transform="rotate(-90) scale(-1,1)" class="st2" v:langID="1033"><v:paragraph/><v:tabList/>HCP</text> </g>
<g id="group37-50" transform="translate(18.375,-18.375)" v:mID="37" v:groupContext="group">
<title>Ark.37</title>
<g id="shape2-51" v:mID="2" v:groupContext="shape">
<title>Ark.2</title>
<desc>Link Data</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="240.945" cy="164.309" width="481.89" height="28.3465"/>
<rect x="0" y="150.136" width="481.89" height="28.3465" class="st6"/>
<text x="220.58" y="167.61" class="st2" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Link Data</text> </g>
</g>
<g id="group38-54" transform="translate(301.84,-103.414)" v:mID="38" v:groupContext="group">
<title>Ark.38</title>
<g id="shape1-55" v:mID="1" v:groupContext="shape">
<title>Ark.1</title>
<desc>Cleartext / Security</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="70.8661" cy="164.309" width="141.74" height="28.3465"/>
<rect x="0" y="150.136" width="141.732" height="28.3465" class="st7"/>
<text x="28.65" y="167.61" class="st2" v:langID="1053"><v:paragraph v:horizAlign="1"/><v:tabList/>Cleartext / Security</text> </g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,49 +0,0 @@
\page stack FPC embedded stack
The communication stack implemented on the embedded devices by FPC follows the following
specification.
\image html stack.svg "HCP embedded stack"
\image latex stack.eps "HCP embedded stack"
\section phy Physical
The physical layer have a fixed size buffer of 256 bytes.
\section link Link
The link layer handles packet consistency.
Each packet received is acknowledged on the link layer, if an error occurs no retransmission is
done on this level, instead the error is propagated upwards.
Channel | Size | Payload | CRC |
------- | ------- | ---------- | ------- |
2 bytes | 2 bytes | size bytes | 4 bytes |
All fields are using unsigned data types.
\section tsp Transport
The transport layer handles packet segmentation.
As the PHY MTU is 256 bytes the maximum payload per segment is 242 bytes.
Errors are propagated upwards.
Size | Seq Nr | Seq Len | Payload |
------- | ------- | ------- | ---------- |
2 bytes | 2 bytes | 2 bytes | size bytes |
All fields are using unsigned data types.
\section app Application
The application layer is a optional security layer, the default implementation is clear text
(unsecure).
If a security solution is used it will be part of that products documentation.
\section hcp HCP
The HCP frame is described in the \link hcpf HCP frame format section.

View File

@ -1,28 +0,0 @@
\page hcpf HCP frame format
The Host Communication Protocol (HCP) describes a general way of sending commands and information
between devices.
\image html hcp.svg "HCP frame format"
\image latex hcp.eps "HCP frame format"
\section cmd Command
The Commands define the general action that is going to be executed. However, each command
can have several Arguments each with data attached.
| CMD | Num Args | Payload |
| ------- | -------- | -------- |
| 2 bytes | 2 bytes | xx bytes |
All fields are using unsigned data types.
\section arg Argument
The Argument is used as a complement to the command if it is needed and can contain arbitrary data.
| ARG | Size | Data |
| ------- | --------| ---------- |
| 2 bytes | 2 bytes | size bytes |
All fields are using unsigned data types.

View File

@ -1,89 +0,0 @@
\page bio Biometrics
\section capture_b Capture
@startuml
Host --> BioMcu: CMD_CAPTURE \nARG_TIMEOUT[timeout]
... Wait for finger down...
rnote over BioMcu : fpc_bep_capture
hnote over BioMcu : image
BioMcu --> Host: CMD_CAPTURE \nARG_RESULT[bep_result]
@enduml
***
\section extract_b Extract
@startuml
group Capture
Host --> BioMcu: CMD_CAPTURE \nARG_TIMEOUT[timeout]
... Wait for finger down...
rnote over BioMcu : fpc_bep_capture
hnote over BioMcu : image
BioMcu --> Host: CMD_CAPTURE \nARG_RESULT[bep_result]
end
Host --> BioMcu: CMD_IMAGE \nARG_EXTRACT
rnote over BioMcu : fpc_bep_image_extract
hnote over BioMcu : template
BioMcu --> Host: CMD_IMAGE \nARG_RESULT[bep_result]
@enduml
***
\section enroll_b Enroll
@startuml
Host --> BioMcu: CMD_ENROLL \nARG_START
rnote over BioMcu : fpc_bep_enroll_start
hnote over BioMcu : session
BioMcu --> Host: CMD_ENROLL \nARG_RESULT[bep_result]
|||
loop Enroll Image
group Capture
Host --> BioMcu: CMD_CAPTURE \nARG_TIMEOUT[timeout]
... Wait for finger down...
rnote over BioMcu : fpc_bep_capture
hnote over BioMcu : image
BioMcu --> Host: CMD_CAPTURE \nARG_RESULT[bep_result]
end
|||
Host --> BioMcu: CMD_ENROLL \nARG_ADD
rnote over BioMcu : fpc_bep_enroll
rnote over BioMcu : count
BioMcu --> Host: CMD_ENROLL \nARG_COUNT[count] \nARG_RESULT[bep_result]
Host --> BioMcu: CMD_WAIT \nARG_FINGER_UP \nARG_TIMEOUT[timeout]
... Wait for finger up...
BioMcu --> Host: CMD_WAIT \nARG_RESULT[bep_result]
end
|||
Host --> BioMcu: CMD_ENROLL \nARG_FINISH
rnote over BioMcu : fpc_bep_enroll_finish
hnote over BioMcu : enroll template
BioMcu --> Host: CMD_ENROLL \nARG_RESULT[bep_result]
@enduml
***
\section identify_b Identify
@startuml
group Capture
Host --> BioMcu: CMD_CAPTURE \nARG_TIMEOUT[timeout]
... Wait for finger down...
rnote over BioMcu : fpc_bep_capture
hnote over BioMcu : image
BioMcu --> Host: CMD_CAPTURE \nARG_RESULT[bep_result]
end
|||
group Extract
Host --> BioMcu: CMD_IMAGE \nARG_EXTRACT
rnote over BioMcu : fpc_bep_image_extract
hnote over BioMcu : template
BioMcu --> Host: CMD_IMAGE \nARG_RESULT[bep_result]
end
|||
Host --> BioMcu: CMD_IDENTIFY
rnote over BioMcu : fpc_template_storage_get_all
rnote over BioMcu : fpc_bep_identify
hnote over BioMcu : id
BioMcu --> Host: CMD_IDENTIFY \nARG_MATCH \nARG_ID[id] \nARG_RESULT[bep_result]
hnote over Host: id
@enduml
***

View File

@ -1,36 +0,0 @@
\page image Image handling
\section create_i Create
@startuml
Host --> BioMcu: CMD_IMAGE \nARG_CREATE
hnote over BioMcu : image
BioMcu --> Host: CMD_IMAGE \nARG_RESULT[bep_result]
@enduml
***
\section upload_i Upload
@startuml
participant Host
participant BioMcu
hnote over BioMcu : image
Host --> BioMcu: CMD_IMAGE \nARG_UPLOAD
BioMcu --> Host: CMD_IMAGE \nARG_RESULT[bep_result] \nARG_DATA[image]
hnote over Host : image
@enduml
***
\section download_i Download
@startuml
participant Host
participant BioMcu
hnote over Host : image
Host --> BioMcu: CMD_IMAGE \nARG_DOWNLOAD \nARG_DATA[image]
hnote over BioMcu : image
BioMcu --> Host: CMD_IMAGE \nARG_RESULT[bep_result]
@enduml
***

View File

@ -1,40 +0,0 @@
\page template Template handling
\section upload_t Upload
@startuml
participant Host
participant BioMcu
hnote over BioMcu : template
Host --> BioMcu: CMD_TEMPLATE \nARG_UPLOAD
BioMcu --> Host: CMD_TEMPLATE \nARG_RESULT[bep_result] \nARG_DATA[template]
hnote over Host : template
@enduml
***
\section download_t Download
@startuml
participant Host
participant BioMcu
hnote over Host : template
Host --> BioMcu: CMD_TEMPLATE \nARG_DOWNLOAD \nARG_DATA[template]
hnote over BioMcu : template
BioMcu --> Host: CMD_TEMPLATE \nARG_RESULT[bep_result]
@enduml
***
\section save_t Save
@startuml
participant Host
participant BioMcu
hnote over BioMcu : template
Host --> BioMcu: CMD_TEMPLATE \nARG_SAVE \nARG_ID[id]
hnote over BioMcu : template[id] (nvm)
BioMcu --> Host: CMD_TEMPLATE \nARG_RESULT[bep_result]
@enduml
***

View File

@ -1,69 +0,0 @@
\page storage Storage handling
\section delete_id Delete ID
@startuml
participant Host
participant BioMcu
hnote over BioMcu : template[id] (nvm)
Host --> BioMcu: CMD_STORAGE_TEMPLATE \nARG_DELETE \nARG_ID[id]
rnote over BioMcu : fpc_template_storage_remove
BioMcu --> Host: CMD_STORAGE_TEMPLATE \nARG_RESULT[bep_result]
@enduml
***
\section delete_all Delete All
@startuml
participant Host
participant BioMcu
hnote over BioMcu : template[] (nvm)
Host --> BioMcu: CMD_STORAGE_TEMPLATE \nARG_DELETE \nARG_ALL
rnote over BioMcu : fpc_template_storage_remove_all
BioMcu --> Host: CMD_STORAGE_TEMPLATE \nARG_RESULT[bep_result]
@enduml
***
\section upload_s Upload
@startuml
participant Host
participant BioMcu
hnote over BioMcu : template[id] (nvm)
Host --> BioMcu: CMD_STORAGE_TEMPLATE \nARG_UPLOAD \nARG_ID[id]
rnote over BioMcu : fpc_template_storage_get
hnote over BioMcu : template (ram)
BioMcu --> Host: CMD_STORAGE_TEMPLATE \nARG_RESULT[bep_result]
@enduml
***
\section count_s Count
@startuml
participant Host
participant BioMcu
Host --> BioMcu: CMD_STORAGE_TEMPLATE \nARG_COUNT
rnote over BioMcu : fpc_template_storage_get_count
BioMcu --> Host: CMD_STORAGE_TEMPLATE \nARG_RESULT[bep_result] \nARG_COUNT[template_count]
@enduml
***
\section get_id Get IDs
@startuml
participant Host
participant BioMcu
hnote over BioMcu : ids[] (nvm)
Host --> BioMcu: CMD_STORAGE_TEMPLATE \nARG_ID
rnote over BioMcu : fpc_template_storage_get_all_ids
BioMcu --> Host: CMD_STORAGE_TEMPLATE \nARG_RESULT[bep_result] \nARG_DATA[ids]
@enduml
***

View File

@ -1,28 +0,0 @@
\page sensor Sensor operations
\section wait_up_s Wait for finger up
@startuml
Host --> BioMcu: CMD_WAIT \nARG_FINGER_UP \nARG_TIMEOUT[timeout]
... Wait for finger up...
BioMcu --> Host: CMD_WAIT \nARG_RESULT[bep_result]
@enduml
***
\section wait_down_s Wait for finger down
@startuml
Host --> BioMcu: CMD_WAIT \nARG_FINGER_DOWN \nARG_TIMEOUT[timeout]
... Wait for finger down...
BioMcu --> Host: CMD_WAIT \nARG_RESULT[bep_result]
@enduml
***
\section sensor_reset_s Reset sensor
@startuml
Host --> BioMcu : CMD_SENSOR \nARG_RESET
rnote over BioMcu : fpc_bep_sensor_reset
BioMcu --> Host : CMD_SENSOR \nARG_RESULT[bep_result]
@enduml
***

View File

@ -1,10 +0,0 @@
\page device Device operations
\section reset_d Reset device
@startuml
Host --> BioMcu: CMD_RESET
BioMcu --> Host: CMD_RESET \nARG_RESULT[bep_result]
rnote over BioMcu: Reset
@enduml
***

View File

@ -1,13 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<script type='text/javascript'>
location.replace('html/index.html');
</script>
</head>
<body>
<p>You will be redirected automatically, otherwise please
<a href="html/index.html">click here</a>.
</p>
</body>
</html>

Binary file not shown.

View File

@ -1,86 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: doc/md/1_stack.md File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('1__stack_8md.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">doc/md/1_stack.md File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="1__stack_8md_source.html">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="1__stack_8md.html">1_stack.md</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:44 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -1,86 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: doc/md/2_hcpframe.md File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('2__hcpframe_8md.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">doc/md/2_hcpframe.md File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="2__hcpframe_8md_source.html">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="2__hcpframe_8md.html">2_hcpframe.md</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:44 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,84 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: doc/md/2_hcpframe.md Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('2__hcpframe_8md.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">doc/md/2_hcpframe.md</div> </div>
</div><!--header-->
<div class="contents">
<a href="2__hcpframe_8md.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;\page hcpf HCP frame format</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;The Host Communication Protocol (HCP) describes a general way of sending commands and information</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;between devices.</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;\image html hcp.svg &quot;HCP frame format&quot;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;\image latex hcp.eps &quot;HCP frame format&quot;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;\section cmd Command</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;The Commands define the general action that is going to be executed. However, each command</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;can have several Arguments each with data attached.</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;| CMD | Num Args | Payload |</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;| ------- | -------- | -------- |</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;| 2 bytes | 2 bytes | xx bytes |</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;All fields are using unsigned data types.</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;\section arg Argument</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;The Argument is used as a complement to the command if it is needed and can contain arbitrary data.</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;| ARG | Size | Data |</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;| ------- | --------| ---------- |</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;| 2 bytes | 2 bytes | size bytes |</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;All fields are using unsigned data types.</div></div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="2__hcpframe_8md.html">2_hcpframe.md</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:44 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,86 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: doc/md/4_biometrics.md File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('4__biometrics_8md.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">doc/md/4_biometrics.md File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="4__biometrics_8md_source.html">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="4__biometrics_8md.html">4_biometrics.md</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:44 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -1,86 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: doc/md/5_image.md File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('5__image_8md.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">doc/md/5_image.md File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="5__image_8md_source.html">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="5__image_8md.html">5_image.md</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:44 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,84 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: doc/md/5_image.md Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('5__image_8md.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">doc/md/5_image.md</div> </div>
</div><!--header-->
<div class="contents">
<a href="5__image_8md.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;\page image Image handling</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;\section create_i Create</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;@startuml</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;Host --&gt; BioMcu: CMD_IMAGE \nARG_CREATE</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;hnote over BioMcu : image</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;BioMcu --&gt; Host: CMD_IMAGE \nARG_RESULT[bep_result]</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;@enduml</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;***</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;\section upload_i Upload</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;@startuml</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;participant Host</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;participant BioMcu</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;hnote over BioMcu : image</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;Host --&gt; BioMcu: CMD_IMAGE \nARG_UPLOAD</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;BioMcu --&gt; Host: CMD_IMAGE \nARG_RESULT[bep_result] \nARG_DATA[image]</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;hnote over Host : image</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;@enduml</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;***</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;\section download_i Download</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;@startuml</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;participant Host</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;participant BioMcu</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;hnote over Host : image</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;Host --&gt; BioMcu: CMD_IMAGE \nARG_DOWNLOAD \nARG_DATA[image]</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;hnote over BioMcu : image</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;BioMcu --&gt; Host: CMD_IMAGE \nARG_RESULT[bep_result]</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;@enduml</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;***</div></div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="5__image_8md.html">5_image.md</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:44 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,86 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: doc/md/6_template.md File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('6__template_8md.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">doc/md/6_template.md File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="6__template_8md_source.html">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="6__template_8md.html">6_template.md</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:44 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,84 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: doc/md/6_template.md Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('6__template_8md.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">doc/md/6_template.md</div> </div>
</div><!--header-->
<div class="contents">
<a href="6__template_8md.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;\page template Template handling</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;\section upload_t Upload</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;@startuml</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;participant Host</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;participant BioMcu</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;hnote over BioMcu : template</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;Host --&gt; BioMcu: CMD_TEMPLATE \nARG_UPLOAD</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;BioMcu --&gt; Host: CMD_TEMPLATE \nARG_RESULT[bep_result] \nARG_DATA[template]</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;hnote over Host : template</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;@enduml</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;***</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;\section download_t Download</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;@startuml</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;participant Host</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;participant BioMcu</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;hnote over Host : template</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;Host --&gt; BioMcu: CMD_TEMPLATE \nARG_DOWNLOAD \nARG_DATA[template]</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;hnote over BioMcu : template</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;BioMcu --&gt; Host: CMD_TEMPLATE \nARG_RESULT[bep_result]</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;@enduml</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;***</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;\section save_t Save</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;@startuml</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;participant Host</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;participant BioMcu</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;hnote over BioMcu : template</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;Host --&gt; BioMcu: CMD_TEMPLATE \nARG_SAVE \nARG_ID[id]</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;hnote over BioMcu : template[id] (nvm)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;BioMcu --&gt; Host: CMD_TEMPLATE \nARG_RESULT[bep_result]</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;@enduml</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;***</div></div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="6__template_8md.html">6_template.md</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:44 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,86 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: doc/md/7_storage.md File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('7__storage_8md.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">doc/md/7_storage.md File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="7__storage_8md_source.html">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="7__storage_8md.html">7_storage.md</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:44 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -1,86 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: doc/md/8_sensor.md File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('8__sensor_8md.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">doc/md/8_sensor.md File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="8__sensor_8md_source.html">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="8__sensor_8md.html">8_sensor.md</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:44 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,84 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: doc/md/8_sensor.md Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('8__sensor_8md.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">doc/md/8_sensor.md</div> </div>
</div><!--header-->
<div class="contents">
<a href="8__sensor_8md.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;\page sensor Sensor operations</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;\section wait_up_s Wait for finger up</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;@startuml</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;Host --&gt; BioMcu: CMD_WAIT \nARG_FINGER_UP \nARG_TIMEOUT[timeout]</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;... Wait for finger up...</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;BioMcu --&gt; Host: CMD_WAIT \nARG_RESULT[bep_result]</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;@enduml</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;***</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;\section wait_down_s Wait for finger down</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;@startuml</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;Host --&gt; BioMcu: CMD_WAIT \nARG_FINGER_DOWN \nARG_TIMEOUT[timeout]</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;... Wait for finger down...</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;BioMcu --&gt; Host: CMD_WAIT \nARG_RESULT[bep_result]</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;@enduml</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;***</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;\section sensor_reset_s Reset sensor</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;@startuml</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;Host --&gt; BioMcu : CMD_SENSOR \nARG_RESET</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;rnote over BioMcu : fpc_bep_sensor_reset</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;BioMcu --&gt; Host : CMD_SENSOR \nARG_RESULT[bep_result]</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;@enduml</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;***</div></div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="8__sensor_8md.html">8_sensor.md</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:44 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,86 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: doc/md/9_device.md File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('9__device_8md.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">doc/md/9_device.md File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="9__device_8md_source.html">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="9__device_8md.html">9_device.md</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:44 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,84 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: doc/md/9_device.md Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('9__device_8md.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">doc/md/9_device.md</div> </div>
</div><!--header-->
<div class="contents">
<a href="9__device_8md.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;\page device Device operations</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;\section reset_d Reset device</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;@startuml</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;Host --&gt; BioMcu: CMD_RESET</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;BioMcu --&gt; Host: CMD_RESET \nARG_RESULT[bep_result]</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;rnote over BioMcu: Reset</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;@enduml</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;***</div></div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="9__device_8md.html">9_device.md</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:44 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,94 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: Data Structures</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="classes.html"><span>Data&#160;Structure&#160;Index</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('annotated.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">Data Structures</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structfpc__com__chain.html" target="_self">fpc_com_chain</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structfpc__com__chain__private.html" target="_self">fpc_com_chain_private</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structfpc__com__packet__link.html" target="_self">fpc_com_packet_link</a></td><td class="desc"></td></tr>
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structfpc__com__packet__transport.html" target="_self">fpc_com_packet_transport</a></td><td class="desc"></td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structfpc__hcp__arg__data.html" target="_self">fpc_hcp_arg_data</a></td><td class="desc">Command Argument </td></tr>
<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structfpc__hcp__packet.html" target="_self">fpc_hcp_packet</a></td><td class="desc">Application Command Packet </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Mar 24 2020 11:09:45 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,9 +0,0 @@
var annotated_dup =
[
[ "fpc_com_chain", "structfpc__com__chain.html", "structfpc__com__chain" ],
[ "fpc_com_chain_private", "structfpc__com__chain__private.html", "structfpc__com__chain__private" ],
[ "fpc_com_packet_link", "structfpc__com__packet__link.html", "structfpc__com__packet__link" ],
[ "fpc_com_packet_transport", "structfpc__com__packet__transport.html", "structfpc__com__packet__transport" ],
[ "fpc_hcp_arg_data", "structfpc__hcp__arg__data.html", "structfpc__hcp__arg__data" ],
[ "fpc_hcp_packet", "structfpc__hcp__packet.html", "structfpc__hcp__packet" ]
];

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 B

View File

@ -1,90 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: Biometrics</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('bio.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">Biometrics </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="capture_b"></a>
Capture</h1>
<hr/>
<h1><a class="anchor" id="extract_b"></a>
Extract</h1>
<hr/>
<h1><a class="anchor" id="enroll_b"></a>
Enroll</h1>
<hr/>
<h1><a class="anchor" id="identify_b"></a>
Identify</h1>
<hr/>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="index.html">Main</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:45 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,93 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: Data Structure Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="classes.html"><span>Data&#160;Structure&#160;Index</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classes.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">Data Structure Index</div> </div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_F">F</a></div>
<table class="classindex">
<tr><td rowspan="2" valign="bottom"><a name="letter_f"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;f&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structfpc__com__chain__private.html">fpc_com_chain_private</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structfpc__com__packet__transport.html">fpc_com_packet_transport</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structfpc__hcp__packet.html">fpc_hcp_packet</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structfpc__com__packet__link.html">fpc_com_packet_link</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structfpc__hcp__arg__data.html">fpc_hcp_arg_data</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td valign="top"><a class="el" href="structfpc__com__chain.html">fpc_com_chain</a>&#160;&#160;&#160;</td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td></tr>
</table>
<div class="qindex"><a class="qindex" href="#letter_F">F</a></div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Mar 24 2020 11:09:45 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

View File

@ -1,81 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: Device operations</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('device.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">Device operations </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="reset_d"></a>
Reset device</h1>
<hr/>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="index.html">Main</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:45 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,74 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: src -&gt; inc Relation</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('dir_68267d1309a1af8e8297ef4c3efbcdba.html','');});
</script>
<div id="doc-content">
<div class="contents">
<h3>src &rarr; inc Relation</h3><table class="dirtab"><tr class="dirtab"><th class="dirtab">File in src</th><th class="dirtab">Includes file in inc</th></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="fpc__com__link_8c.html">fpc_com_link.c</a></td><td class="dirtab"><a class="el" href="fpc__com__link_8h.html">fpc_com_link.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="fpc__com__transport_8c.html">fpc_com_transport.c</a></td><td class="dirtab"><a class="el" href="fpc__com__link_8h.html">fpc_com_link.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="fpc__com__transport_8c.html">fpc_com_transport.c</a></td><td class="dirtab"><a class="el" href="fpc__com__transport_8h.html">fpc_com_transport.h</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="fpc__hcp_8c.html">fpc_hcp.c</a></td><td class="dirtab"><a class="el" href="fpc__hcp_8h.html">fpc_hcp.h</a></td></tr></table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:45 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,103 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: src Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('dir_68267d1309a1af8e8297ef4c3efbcdba.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">src Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Directory dependency graph for src:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="dir_68267d1309a1af8e8297ef4c3efbcdba_dep.svg" width="83" height="155"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:fpc__com__link_8c"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__com__link_8c.html">fpc_com_link.c</a> <a href="fpc__com__link_8c_source.html">[code]</a></td></tr>
<tr class="memdesc:fpc__com__link_8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Communication link layer implementation. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:fpc__com__transport_8c"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__com__transport_8c.html">fpc_com_transport.c</a> <a href="fpc__com__transport_8c_source.html">[code]</a></td></tr>
<tr class="memdesc:fpc__com__transport_8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Communication transport layer implementation. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:fpc__hcp_8c"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__hcp_8c.html">fpc_hcp.c</a> <a href="fpc__hcp_8c_source.html">[code]</a></td></tr>
<tr class="memdesc:fpc__hcp_8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Host Communication Protocol implementation. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:45 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,6 +0,0 @@
var dir_68267d1309a1af8e8297ef4c3efbcdba =
[
[ "fpc_com_link.c", "fpc__com__link_8c.html", "fpc__com__link_8c" ],
[ "fpc_com_transport.c", "fpc__com__transport_8c.html", "fpc__com__transport_8c" ],
[ "fpc_hcp.c", "fpc__hcp_8c.html", "fpc__hcp_8c" ]
];

View File

@ -1,5 +0,0 @@
<map id="src" name="src">
<area shape="rect" id="node1" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" title="src" alt="" coords="5,5,77,53"/>
<area shape="rect" id="node2" href="dir_bfccd401955b95cf8c75461437045ac0.html" title="inc" alt="" coords="5,101,77,149"/>
<area shape="rect" id="edge1-headlabel" href="dir_000001_000000.html" title="4" alt="" coords="46,76,54,90"/>
</map>

View File

@ -1 +0,0 @@
078edd713872194e35fdc26e1b4695d3

View File

@ -1,38 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: src Pages: 1 -->
<svg width="62pt" height="116pt"
viewBox="0.00 0.00 62.00 116.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 112)">
<title>src</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-112 58,-112 58,4 -4,4"/>
<!-- dir_68267d1309a1af8e8297ef4c3efbcdba -->
<g id="node1" class="node"><title>dir_68267d1309a1af8e8297ef4c3efbcdba</title>
<g id="a_node1"><a xlink:href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" target="_top" xlink:title="src">
<polygon fill="#eeeeff" stroke="black" points="54,-108 0,-108 0,-72 54,-72 54,-108"/>
<text text-anchor="middle" x="27" y="-87.5" font-family="Helvetica,sans-Serif" font-size="10.00">src</text>
</a>
</g>
</g>
<!-- dir_bfccd401955b95cf8c75461437045ac0 -->
<g id="node2" class="node"><title>dir_bfccd401955b95cf8c75461437045ac0</title>
<g id="a_node2"><a xlink:href="dir_bfccd401955b95cf8c75461437045ac0.html" target="_top" xlink:title="inc">
<polygon fill="none" stroke="black" points="54,-36 0,-36 0,-0 54,-0 54,-36"/>
<text text-anchor="middle" x="27" y="-15.5" font-family="Helvetica,sans-Serif" font-size="10.00">inc</text>
</a>
</g>
</g>
<!-- dir_68267d1309a1af8e8297ef4c3efbcdba&#45;&gt;dir_bfccd401955b95cf8c75461437045ac0 -->
<g id="edge1" class="edge"><title>dir_68267d1309a1af8e8297ef4c3efbcdba&#45;&gt;dir_bfccd401955b95cf8c75461437045ac0</title>
<path fill="none" stroke="black" d="M27,-71.6966C27,-63.9827 27,-54.7125 27,-46.1124"/>
<polygon fill="black" stroke="black" points="30.5001,-46.1043 27,-36.1043 23.5001,-46.1044 30.5001,-46.1043"/>
<g id="a_edge1&#45;headlabel"><a xlink:href="dir_000001_000000.html" target="_top" xlink:title="4">
<text text-anchor="middle" x="33.3393" y="-47.199" font-family="Helvetica,sans-Serif" font-size="10.00">4</text>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -1,109 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: inc Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('dir_bfccd401955b95cf8c75461437045ac0.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">inc Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:fpc__com__chain_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__com__chain_8h.html">fpc_com_chain.h</a> <a href="fpc__com__chain_8h_source.html">[code]</a></td></tr>
<tr class="memdesc:fpc__com__chain_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Communication chain type definitions. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:fpc__com__link_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__com__link_8h.html">fpc_com_link.h</a> <a href="fpc__com__link_8h_source.html">[code]</a></td></tr>
<tr class="memdesc:fpc__com__link_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Communication link interface. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:fpc__com__packets_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__com__packets_8h.html">fpc_com_packets.h</a> <a href="fpc__com__packets_8h_source.html">[code]</a></td></tr>
<tr class="memdesc:fpc__com__packets_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Communication packet type definitions. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:fpc__com__result_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__com__result_8h.html">fpc_com_result.h</a> <a href="fpc__com__result_8h_source.html">[code]</a></td></tr>
<tr class="memdesc:fpc__com__result_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Communication result type definitions. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:fpc__com__transport_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__com__transport_8h.html">fpc_com_transport.h</a> <a href="fpc__com__transport_8h_source.html">[code]</a></td></tr>
<tr class="memdesc:fpc__com__transport_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Communication transport interface. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:fpc__hcp_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__hcp_8h.html">fpc_hcp.h</a> <a href="fpc__hcp_8h_source.html">[code]</a></td></tr>
<tr class="memdesc:fpc__hcp_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Host Communication Protocol interface. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:fpc__hcp__common_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__hcp__common_8h.html">fpc_hcp_common.h</a> <a href="fpc__hcp__common_8h_source.html">[code]</a></td></tr>
<tr class="memdesc:fpc__hcp__common_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Host Communication Protocol common type definitions. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_bfccd401955b95cf8c75461437045ac0.html">inc</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:45 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,10 +0,0 @@
var dir_bfccd401955b95cf8c75461437045ac0 =
[
[ "fpc_com_chain.h", "fpc__com__chain_8h.html", "fpc__com__chain_8h" ],
[ "fpc_com_link.h", "fpc__com__link_8h.html", "fpc__com__link_8h" ],
[ "fpc_com_packets.h", "fpc__com__packets_8h.html", "fpc__com__packets_8h" ],
[ "fpc_com_result.h", "fpc__com__result_8h.html", "fpc__com__result_8h" ],
[ "fpc_com_transport.h", "fpc__com__transport_8h.html", "fpc__com__transport_8h" ],
[ "fpc_hcp.h", "fpc__hcp_8h.html", "fpc__hcp_8h" ],
[ "fpc_hcp_common.h", "fpc__hcp__common_8h.html", "fpc__hcp__common_8h" ]
];

Binary file not shown.

Before

Width:  |  Height:  |  Size: 746 B

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -1,104 +0,0 @@
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
}
function updateStripes()
{
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
}
function toggleLevel(level)
{
$('table.directory tr').each(function() {
var l = this.id.split('_').length-1;
var i = $('#img'+this.id.substring(3));
var a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
a.html('&#9660;');
$(this).show();
} else if (l==level+1) {
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
a.html('&#9658;');
$(this).show();
} else {
$(this).hide();
}
});
updateStripes();
}
function toggleFolder(id)
{
// the clicked row
var currentRow = $('#row_'+id);
// all rows after the clicked row
var rows = currentRow.nextAll("tr");
var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
// only match elements AFTER this one (can't hide elements before)
var childRows = rows.filter(function() { return this.id.match(re); });
// first row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
// replace down arrow by right arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
currentRowSpans.filter(".arrow").html('&#9658;');
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
currentRowSpans.filter(".arrow").html('&#9660;');
// replace down arrows by right arrows for child rows
var childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
childRowsSpans.filter(".arrow").html('&#9658;');
childRows.show(); //show all children
}
updateStripes();
}
function toggleInherit(id)
{
var rows = $('tr.inherit.'+id);
var img = $('tr.inherit_header.'+id+' img');
var src = $(img).attr('src');
if (rows.filter(':first').is(':visible')===true) {
rows.css('display','none');
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
rows.css('display','table-row'); // using show() causes jump in firefox
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
}
$(document).ready(function() {
$('.code,.codeRef').each(function() {
$(this).data('powertip',$('#'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html());
$(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true });
});
});

View File

@ -1,99 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: File List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('files.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">File List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_bfccd401955b95cf8c75461437045ac0.html" target="_self">inc</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="fpc__com__chain_8h_source.html"><span class="icondoc"></span></a><a class="el" href="fpc__com__chain_8h.html" target="_self">fpc_com_chain.h</a></td><td class="desc">Communication chain type definitions </td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="fpc__com__link_8h_source.html"><span class="icondoc"></span></a><a class="el" href="fpc__com__link_8h.html" target="_self">fpc_com_link.h</a></td><td class="desc">Communication link interface </td></tr>
<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="fpc__com__packets_8h_source.html"><span class="icondoc"></span></a><a class="el" href="fpc__com__packets_8h.html" target="_self">fpc_com_packets.h</a></td><td class="desc">Communication packet type definitions </td></tr>
<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="fpc__com__result_8h_source.html"><span class="icondoc"></span></a><a class="el" href="fpc__com__result_8h.html" target="_self">fpc_com_result.h</a></td><td class="desc">Communication result type definitions </td></tr>
<tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="fpc__com__transport_8h_source.html"><span class="icondoc"></span></a><a class="el" href="fpc__com__transport_8h.html" target="_self">fpc_com_transport.h</a></td><td class="desc">Communication transport interface </td></tr>
<tr id="row_0_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="fpc__hcp_8h_source.html"><span class="icondoc"></span></a><a class="el" href="fpc__hcp_8h.html" target="_self">fpc_hcp.h</a></td><td class="desc">Host Communication Protocol interface </td></tr>
<tr id="row_0_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="fpc__hcp__common_8h_source.html"><span class="icondoc"></span></a><a class="el" href="fpc__hcp__common_8h.html" target="_self">fpc_hcp_common.h</a></td><td class="desc">Host Communication Protocol common type definitions </td></tr>
<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span id="img_1_" class="iconfopen" onclick="toggleFolder('1_')">&#160;</span><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" target="_self">src</a></td><td class="desc"></td></tr>
<tr id="row_1_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="fpc__com__link_8c_source.html"><span class="icondoc"></span></a><a class="el" href="fpc__com__link_8c.html" target="_self">fpc_com_link.c</a></td><td class="desc">Communication link layer implementation </td></tr>
<tr id="row_1_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="fpc__com__transport_8c_source.html"><span class="icondoc"></span></a><a class="el" href="fpc__com__transport_8c.html" target="_self">fpc_com_transport.c</a></td><td class="desc">Communication transport layer implementation </td></tr>
<tr id="row_1_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="fpc__hcp_8c_source.html"><span class="icondoc"></span></a><a class="el" href="fpc__hcp_8c.html" target="_self">fpc_hcp.c</a></td><td class="desc">Host Communication Protocol implementation </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Mar 24 2020 11:09:45 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,5 +0,0 @@
var files =
[
[ "inc", "dir_bfccd401955b95cf8c75461437045ac0.html", "dir_bfccd401955b95cf8c75461437045ac0" ],
[ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ]
];

Binary file not shown.

Before

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 597 B

View File

@ -1,197 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: inc/fpc_com_chain.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('fpc__com__chain_8h.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> </div>
<div class="headertitle">
<div class="title">fpc_com_chain.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Communication chain type definitions.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;stdint.h&gt;</code><br />
<code>#include &quot;<a class="el" href="fpc__com__result_8h_source.html">fpc_com_result.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="fpc__hcp__common_8h_source.html">fpc_hcp_common.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="fpc__com__packets_8h_source.html">fpc_com_packets.h</a>&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for fpc_com_chain.h:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="fpc__com__chain_8h__incl.svg" width="472" height="187"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div><div class="textblock"><div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="fpc__com__chain_8h__dep__incl.svg" width="456" height="187"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
<p><a href="fpc__com__chain_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfpc__com__chain__private.html">fpc_com_chain_private</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfpc__com__chain.html">fpc_com_chain</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a0983b70df0d560f35537acc24ecc0d0d"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structfpc__com__chain__private.html">fpc_com_chain_private</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__com__chain_8h.html#a0983b70df0d560f35537acc24ecc0d0d">fpc_com_chain_private_t</a></td></tr>
<tr class="memdesc:a0983b70df0d560f35537acc24ecc0d0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Communication chain private variables. <a href="#a0983b70df0d560f35537acc24ecc0d0d">More...</a><br /></td></tr>
<tr class="separator:a0983b70df0d560f35537acc24ecc0d0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1530dd4e8729e5f546a96abc5ac0a6de"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structfpc__com__chain.html">fpc_com_chain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__com__chain_8h.html#a1530dd4e8729e5f546a96abc5ac0a6de">fpc_com_chain_t</a></td></tr>
<tr class="memdesc:a1530dd4e8729e5f546a96abc5ac0a6de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Communication chain. <a href="#a1530dd4e8729e5f546a96abc5ac0a6de">More...</a><br /></td></tr>
<tr class="separator:a1530dd4e8729e5f546a96abc5ac0a6de"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:aed3b93f1297ab69d5bd87603d4d00005"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__com__chain_8h.html#aed3b93f1297ab69d5bd87603d4d00005">fpc_com_chain_dir_t</a> { <br />
&#160;&#160;<a class="el" href="fpc__com__chain_8h.html#aed3b93f1297ab69d5bd87603d4d00005afe8870bc644ab21ffad73d3045febd4d">FPC_COM_CHAIN_TX</a> = 0,
<br />
&#160;&#160;<a class="el" href="fpc__com__chain_8h.html#aed3b93f1297ab69d5bd87603d4d00005aa50bc934637a1ceea907810ccdd36e1c">FPC_COM_CHAIN_RX</a> = 1
<br />
}<tr class="memdesc:aed3b93f1297ab69d5bd87603d4d00005"><td class="mdescLeft">&#160;</td><td class="mdescRight">Communication chain direction type. <a href="fpc__com__chain_8h.html#aed3b93f1297ab69d5bd87603d4d00005">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:aed3b93f1297ab69d5bd87603d4d00005"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Communication chain type definitions. </p>
<p>Definition in file <a class="el" href="fpc__com__chain_8h_source.html">fpc_com_chain.h</a>.</p>
</div><h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="a0983b70df0d560f35537acc24ecc0d0d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="structfpc__com__chain__private.html">fpc_com_chain_private</a> <a class="el" href="fpc__com__chain_8h.html#a0983b70df0d560f35537acc24ecc0d0d">fpc_com_chain_private_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Communication chain private variables. </p>
<p>Definition at line <a class="el" href="fpc__com__chain_8h_source.html#l00034">34</a> of file <a class="el" href="fpc__com__chain_8h_source.html">fpc_com_chain.h</a>.</p>
</div>
</div>
<a class="anchor" id="a1530dd4e8729e5f546a96abc5ac0a6de"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="structfpc__com__chain.html">fpc_com_chain</a> <a class="el" href="fpc__com__chain_8h.html#a1530dd4e8729e5f546a96abc5ac0a6de">fpc_com_chain_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Communication chain. </p>
<p>Definition at line <a class="el" href="fpc__com__chain_8h_source.html#l00048">48</a> of file <a class="el" href="fpc__com__chain_8h_source.html">fpc_com_chain.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="aed3b93f1297ab69d5bd87603d4d00005"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="fpc__com__chain_8h.html#aed3b93f1297ab69d5bd87603d4d00005">fpc_com_chain_dir_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Communication chain direction type. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="aed3b93f1297ab69d5bd87603d4d00005afe8870bc644ab21ffad73d3045febd4d"></a>FPC_COM_CHAIN_TX&#160;</td><td class="fielddoc">
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="aed3b93f1297ab69d5bd87603d4d00005aa50bc934637a1ceea907810ccdd36e1c"></a>FPC_COM_CHAIN_RX&#160;</td><td class="fielddoc">
</td></tr>
</table>
<p>Definition at line <a class="el" href="fpc__com__chain_8h_source.html#l00149">149</a> of file <a class="el" href="fpc__com__chain_8h_source.html">fpc_com_chain.h</a>.</p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_bfccd401955b95cf8c75461437045ac0.html">inc</a></li><li class="navelem"><a class="el" href="fpc__com__chain_8h.html">fpc_com_chain.h</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:44 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,11 +0,0 @@
var fpc__com__chain_8h =
[
[ "fpc_com_chain_private", "structfpc__com__chain__private.html", "structfpc__com__chain__private" ],
[ "fpc_com_chain", "structfpc__com__chain.html", "structfpc__com__chain" ],
[ "fpc_com_chain_private_t", "fpc__com__chain_8h.html#a0983b70df0d560f35537acc24ecc0d0d", null ],
[ "fpc_com_chain_t", "fpc__com__chain_8h.html#a1530dd4e8729e5f546a96abc5ac0a6de", null ],
[ "fpc_com_chain_dir_t", "fpc__com__chain_8h.html#aed3b93f1297ab69d5bd87603d4d00005", [
[ "FPC_COM_CHAIN_TX", "fpc__com__chain_8h.html#aed3b93f1297ab69d5bd87603d4d00005afe8870bc644ab21ffad73d3045febd4d", null ],
[ "FPC_COM_CHAIN_RX", "fpc__com__chain_8h.html#aed3b93f1297ab69d5bd87603d4d00005aa50bc934637a1ceea907810ccdd36e1c", null ]
] ]
];

View File

@ -1,8 +0,0 @@
<map id="inc/fpc_com_chain.h" name="inc/fpc_com_chain.h">
<area shape="rect" id="node2" href="$fpc__com__link_8h.html" title="Communication link interface. " alt="" coords="7,80,138,107"/>
<area shape="rect" id="node5" href="$fpc__com__transport_8h.html" title="Communication transport interface. " alt="" coords="162,80,325,107"/>
<area shape="rect" id="node6" href="$fpc__hcp_8h.html" title="Host Communication Protocol interface. " alt="" coords="349,80,449,107"/>
<area shape="rect" id="node3" href="$fpc__com__link_8c.html" title="Communication link layer implementation. " alt="" coords="5,155,137,181"/>
<area shape="rect" id="node4" href="$fpc__com__transport_8c.html" title="Communication transport layer implementation. " alt="" coords="162,155,325,181"/>
<area shape="rect" id="node7" href="$fpc__hcp_8c.html" title="Host Communication Protocol implementation. " alt="" coords="349,155,450,181"/>
</map>

View File

@ -1 +0,0 @@
1da3230b9ede79419647e0f9db2fcf4a

View File

@ -1,101 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: inc/fpc_com_chain.h Pages: 1 -->
<svg width="342pt" height="140pt"
viewBox="0.00 0.00 341.50 140.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 136)">
<title>inc/fpc_com_chain.h</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-136 337.5,-136 337.5,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node"><title>Node1</title>
<polygon fill="#bfbfbf" stroke="black" points="125,-112.5 125,-131.5 232,-131.5 232,-112.5 125,-112.5"/>
<text text-anchor="middle" x="178.5" y="-119.5" font-family="Helvetica,sans-Serif" font-size="10.00">inc/fpc_com_chain.h</text>
</g>
<!-- Node2 -->
<g id="node2" class="node"><title>Node2</title>
<g id="a_node2"><a xlink:href="fpc__com__link_8h.html" target="_top" xlink:title="Communication link interface. ">
<polygon fill="white" stroke="black" points="1.5,-56.5 1.5,-75.5 99.5,-75.5 99.5,-56.5 1.5,-56.5"/>
<text text-anchor="middle" x="50.5" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">inc/fpc_com_link.h</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge"><title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M148.877,-108.503C124.881,-98.3795 91.716,-84.388 70.6871,-75.5164"/>
<polygon fill="midnightblue" stroke="midnightblue" points="147.644,-111.781 158.218,-112.444 150.365,-105.332 147.644,-111.781"/>
</g>
<!-- Node5 -->
<g id="node5" class="node"><title>Node5</title>
<g id="a_node5"><a xlink:href="fpc__com__transport_8h.html" target="_top" xlink:title="Communication transport interface. ">
<polygon fill="white" stroke="black" points="117.5,-56.5 117.5,-75.5 239.5,-75.5 239.5,-56.5 117.5,-56.5"/>
<text text-anchor="middle" x="178.5" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">inc/fpc_com_transport.h</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node5 -->
<g id="edge4" class="edge"><title>Node1&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M178.5,-101.805C178.5,-92.9102 178.5,-82.7798 178.5,-75.7511"/>
<polygon fill="midnightblue" stroke="midnightblue" points="175,-102.083 178.5,-112.083 182,-102.083 175,-102.083"/>
</g>
<!-- Node6 -->
<g id="node6" class="node"><title>Node6</title>
<g id="a_node6"><a xlink:href="fpc__hcp_8h.html" target="_top" xlink:title="Host Communication Protocol interface. ">
<polygon fill="white" stroke="black" points="258,-56.5 258,-75.5 333,-75.5 333,-56.5 258,-56.5"/>
<text text-anchor="middle" x="295.5" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">inc/fpc_hcp.h</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node6 -->
<g id="edge6" class="edge"><title>Node1&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M206.164,-108.232C228.049,-98.1312 257.997,-84.3091 277.048,-75.5164"/>
<polygon fill="midnightblue" stroke="midnightblue" points="204.652,-105.075 197.039,-112.444 207.585,-111.431 204.652,-105.075"/>
</g>
<!-- Node3 -->
<g id="node3" class="node"><title>Node3</title>
<g id="a_node3"><a xlink:href="fpc__com__link_8c.html" target="_top" xlink:title="Communication link layer implementation. ">
<polygon fill="white" stroke="black" points="0,-0.5 0,-19.5 99,-19.5 99,-0.5 0,-0.5"/>
<text text-anchor="middle" x="49.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">src/fpc_com_link.c</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2" class="edge"><title>Node2&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M50.1445,-45.8045C49.9798,-36.9102 49.7922,-26.7798 49.6621,-19.7511"/>
<polygon fill="midnightblue" stroke="midnightblue" points="46.6502,-46.1495 50.3349,-56.083 53.649,-46.0199 46.6502,-46.1495"/>
</g>
<!-- Node4 -->
<g id="node4" class="node"><title>Node4</title>
<g id="a_node4"><a xlink:href="fpc__com__transport_8c.html" target="_top" xlink:title="Communication transport layer implementation. ">
<polygon fill="white" stroke="black" points="117.5,-0.5 117.5,-19.5 239.5,-19.5 239.5,-0.5 117.5,-0.5"/>
<text text-anchor="middle" x="178.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">src/fpc_com_transport.c</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node4 -->
<g id="edge3" class="edge"><title>Node2&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M80.1226,-52.503C104.119,-42.3795 137.284,-28.388 158.313,-19.5164"/>
<polygon fill="midnightblue" stroke="midnightblue" points="78.6352,-49.3317 70.782,-56.4435 81.3561,-55.7813 78.6352,-49.3317"/>
</g>
<!-- Node5&#45;&gt;Node4 -->
<g id="edge5" class="edge"><title>Node5&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M178.5,-45.8045C178.5,-36.9102 178.5,-26.7798 178.5,-19.7511"/>
<polygon fill="midnightblue" stroke="midnightblue" points="175,-46.083 178.5,-56.083 182,-46.083 175,-46.083"/>
</g>
<!-- Node7 -->
<g id="node7" class="node"><title>Node7</title>
<g id="a_node7"><a xlink:href="fpc__hcp_8c.html" target="_top" xlink:title="Host Communication Protocol implementation. ">
<polygon fill="white" stroke="black" points="257.5,-0.5 257.5,-19.5 333.5,-19.5 333.5,-0.5 257.5,-0.5"/>
<text text-anchor="middle" x="295.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">src/fpc_hcp.c</text>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node7 -->
<g id="edge7" class="edge"><title>Node6&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M295.5,-45.8045C295.5,-36.9102 295.5,-26.7798 295.5,-19.7511"/>
<polygon fill="midnightblue" stroke="midnightblue" points="292,-46.083 295.5,-56.083 299,-46.083 292,-46.083"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.7 KiB

View File

@ -1,5 +0,0 @@
<map id="inc/fpc_com_chain.h" name="inc/fpc_com_chain.h">
<area shape="rect" id="node3" href="$fpc__com__result_8h.html" title="Communication result type definitions. " alt="" coords="24,80,147,107"/>
<area shape="rect" id="node4" href="$fpc__hcp__common_8h.html" title="Host Communication Protocol common type definitions. " alt="" coords="331,80,467,107"/>
<area shape="rect" id="node6" href="$fpc__com__packets_8h.html" title="Communication packet type definitions. " alt="" coords="171,80,307,107"/>
</map>

View File

@ -1 +0,0 @@
f3463291a698aa7de197e31a9e7ef155

View File

@ -1,92 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: inc/fpc_com_chain.h Pages: 1 -->
<svg width="354pt" height="140pt"
viewBox="0.00 0.00 353.98 140.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 136)">
<title>inc/fpc_com_chain.h</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-136 349.98,-136 349.98,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node"><title>Node1</title>
<polygon fill="#bfbfbf" stroke="black" points="63.4799,-112.5 63.4799,-131.5 170.48,-131.5 170.48,-112.5 63.4799,-112.5"/>
<text text-anchor="middle" x="116.98" y="-119.5" font-family="Helvetica,sans-Serif" font-size="10.00">inc/fpc_com_chain.h</text>
</g>
<!-- Node2 -->
<g id="node2" class="node"><title>Node2</title>
<polygon fill="white" stroke="#bfbfbf" points="92.4799,-0.5 92.4799,-19.5 141.48,-19.5 141.48,-0.5 92.4799,-0.5"/>
<text text-anchor="middle" x="116.98" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">stdint.h</text>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge"><title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M63.3021,-112.844C41.4095,-106.587 18.1815,-95.5315 4.9799,-76 -16.8395,-43.7186 42.2178,-25.3548 82.645,-16.8597"/>
<polygon fill="midnightblue" stroke="midnightblue" points="83.3345,-20.2912 92.4611,-14.9101 81.9708,-13.4253 83.3345,-20.2912"/>
</g>
<!-- Node3 -->
<g id="node3" class="node"><title>Node3</title>
<g id="a_node3"><a xlink:href="fpc__com__result_8h.html" target="_top" xlink:title="Communication result type definitions. ">
<polygon fill="white" stroke="black" points="13.9799,-56.5 13.9799,-75.5 105.98,-75.5 105.98,-56.5 13.9799,-56.5"/>
<text text-anchor="middle" x="59.9799" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">fpc_com_result.h</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2" class="edge"><title>Node1&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M107.822,-112.324C99.4784,-104.42 86.9475,-92.5482 76.803,-82.9377"/>
<polygon fill="midnightblue" stroke="midnightblue" points="78.9712,-80.1705 69.3046,-75.8339 74.157,-85.2522 78.9712,-80.1705"/>
</g>
<!-- Node4 -->
<g id="node4" class="node"><title>Node4</title>
<g id="a_node4"><a xlink:href="fpc__hcp__common_8h.html" target="_top" xlink:title="Host Communication Protocol common type definitions. ">
<polygon fill="white" stroke="black" points="243.98,-56.5 243.98,-75.5 345.98,-75.5 345.98,-56.5 243.98,-56.5"/>
<text text-anchor="middle" x="294.98" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">fpc_hcp_common.h</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge4" class="edge"><title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M145.185,-112.444C175.39,-103.28 223.491,-88.6876 257.009,-78.5192"/>
<polygon fill="midnightblue" stroke="midnightblue" points="258.354,-81.7688 266.907,-75.5164 256.322,-75.0703 258.354,-81.7688"/>
</g>
<!-- Node6 -->
<g id="node6" class="node"><title>Node6</title>
<g id="a_node6"><a xlink:href="fpc__com__packets_8h.html" target="_top" xlink:title="Communication packet type definitions. ">
<polygon fill="white" stroke="black" points="123.98,-56.5 123.98,-75.5 225.98,-75.5 225.98,-56.5 123.98,-56.5"/>
<text text-anchor="middle" x="174.98" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">fpc_com_packets.h</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node6 -->
<g id="edge7" class="edge"><title>Node1&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M126.299,-112.324C134.872,-104.341 147.792,-92.3128 158.168,-82.6529"/>
<polygon fill="midnightblue" stroke="midnightblue" points="160.558,-85.2098 165.492,-75.8339 155.788,-80.0865 160.558,-85.2098"/>
</g>
<!-- Node3&#45;&gt;Node2 -->
<g id="edge3" class="edge"><title>Node3&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M69.1379,-56.324C77.4814,-48.4196 90.0123,-36.5482 100.157,-26.9377"/>
<polygon fill="midnightblue" stroke="midnightblue" points="102.803,-29.2522 107.655,-19.8339 97.9886,-24.1705 102.803,-29.2522"/>
</g>
<!-- Node4&#45;&gt;Node2 -->
<g id="edge5" class="edge"><title>Node4&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M266.775,-56.4435C235.504,-46.9567 185.051,-31.6507 151.458,-21.4595"/>
<polygon fill="midnightblue" stroke="midnightblue" points="152.199,-18.0269 141.613,-18.473 150.166,-24.7254 152.199,-18.0269"/>
</g>
<!-- Node5 -->
<g id="node5" class="node"><title>Node5</title>
<polygon fill="white" stroke="#bfbfbf" points="266.98,-0.5 266.98,-19.5 322.98,-19.5 322.98,-0.5 266.98,-0.5"/>
<text text-anchor="middle" x="294.98" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">stdbool.h</text>
</g>
<!-- Node4&#45;&gt;Node5 -->
<g id="edge6" class="edge"><title>Node4&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M294.98,-56.083C294.98,-49.0059 294.98,-38.8611 294.98,-29.9865"/>
<polygon fill="midnightblue" stroke="midnightblue" points="298.48,-29.751 294.98,-19.7511 291.48,-29.7511 298.48,-29.751"/>
</g>
<!-- Node6&#45;&gt;Node2 -->
<g id="edge8" class="edge"><title>Node6&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M165.661,-56.324C157.087,-48.3414 144.168,-36.3128 133.792,-26.6529"/>
<polygon fill="midnightblue" stroke="midnightblue" points="136.172,-24.0865 126.468,-19.8339 131.402,-29.2098 136.172,-24.0865"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.5 KiB

File diff suppressed because one or more lines are too long

View File

@ -1,235 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: src/fpc_com_link.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('fpc__com__link_8c.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">fpc_com_link.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Communication link layer implementation.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;string.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &quot;<a class="el" href="fpc__com__link_8h_source.html">fpc_com_link.h</a>&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for fpc_com_link.c:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="fpc__com__link_8c__incl.svg" width="551" height="336"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
<p><a href="fpc__com__link_8c_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a43a8a308255ea41e7b7cdefd63a90d14"><td class="memItemLeft" align="right" valign="top"><a class="el" href="fpc__com__result_8h.html#a49b1f9a24f677d396227ea645494070a">fpc_com_result_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__com__link_8c.html#a43a8a308255ea41e7b7cdefd63a90d14">fpc_com_link_transmit</a> (<a class="el" href="fpc__com__packets_8h.html#af6fc3a46c87f1ad2a452eb822f2a0942">fpc_com_packet_link_t</a> *packet, <a class="el" href="fpc__com__chain_8h.html#a1530dd4e8729e5f546a96abc5ac0a6de">fpc_com_chain_t</a> *chain)</td></tr>
<tr class="memdesc:a43a8a308255ea41e7b7cdefd63a90d14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends a packet over the physical link in blocking mode. <a href="#a43a8a308255ea41e7b7cdefd63a90d14">More...</a><br /></td></tr>
<tr class="separator:a43a8a308255ea41e7b7cdefd63a90d14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae64b80cd91fbfe44abc06dc52eacf739"><td class="memItemLeft" align="right" valign="top"><a class="el" href="fpc__com__result_8h.html#a49b1f9a24f677d396227ea645494070a">fpc_com_result_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__com__link_8c.html#ae64b80cd91fbfe44abc06dc52eacf739">fpc_com_link_receive</a> (<a class="el" href="fpc__com__packets_8h.html#af6fc3a46c87f1ad2a452eb822f2a0942">fpc_com_packet_link_t</a> *packet, <a class="el" href="fpc__com__chain_8h.html#a1530dd4e8729e5f546a96abc5ac0a6de">fpc_com_chain_t</a> *chain)</td></tr>
<tr class="memdesc:ae64b80cd91fbfe44abc06dc52eacf739"><td class="mdescLeft">&#160;</td><td class="mdescRight">Receives a packet from the physical link. <a href="#ae64b80cd91fbfe44abc06dc52eacf739">More...</a><br /></td></tr>
<tr class="separator:ae64b80cd91fbfe44abc06dc52eacf739"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e60e21a5ac4ad4881e4929de2f3c2f4"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__com__link_8c.html#a3e60e21a5ac4ad4881e4929de2f3c2f4">fpc_com_link_get_overhead</a> (uint16_t *offset)</td></tr>
<tr class="memdesc:a3e60e21a5ac4ad4881e4929de2f3c2f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the overhead of the layer. <a href="#a3e60e21a5ac4ad4881e4929de2f3c2f4">More...</a><br /></td></tr>
<tr class="separator:a3e60e21a5ac4ad4881e4929de2f3c2f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Communication link layer implementation. </p>
<p>Definition in file <a class="el" href="fpc__com__link_8c_source.html">fpc_com_link.c</a>.</p>
</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a3e60e21a5ac4ad4881e4929de2f3c2f4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t fpc_com_link_get_overhead </td>
<td>(</td>
<td class="paramtype">uint16_t *&#160;</td>
<td class="paramname"><em>offset</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the overhead of the layer. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">offset</td><td>The offset to the packet data. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Overhead size in bytes. </dd></dl>
<p>Definition at line <a class="el" href="fpc__com__link_8c_source.html#l00126">126</a> of file <a class="el" href="fpc__com__link_8c_source.html">fpc_com_link.c</a>.</p>
<p>References <a class="el" href="fpc__com__packets_8h_source.html#l00063">fpc_com_packet_link::channel</a>, <a class="el" href="fpc__com__packets_8h_source.html#l00069">fpc_com_packet_link::crc</a>, and <a class="el" href="fpc__com__packets_8h_source.html#l00065">fpc_com_packet_link::size</a>.</p>
</div>
</div>
<a class="anchor" id="ae64b80cd91fbfe44abc06dc52eacf739"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="fpc__com__result_8h.html#a49b1f9a24f677d396227ea645494070a">fpc_com_result_t</a> fpc_com_link_receive </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fpc__com__packets_8h.html#af6fc3a46c87f1ad2a452eb822f2a0942">fpc_com_packet_link_t</a> *&#160;</td>
<td class="paramname"><em>packet</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="fpc__com__chain_8h.html#a1530dd4e8729e5f546a96abc5ac0a6de">fpc_com_chain_t</a> *&#160;</td>
<td class="paramname"><em>chain</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Receives a packet from the physical link. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">packet</td><td>Packet to populate. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">chain</td><td>The communication chain to use. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="fpc__com__result_8h.html#a49b1f9a24f677d396227ea645494070a">fpc_com_result_t</a> </dd></dl>
<p>Definition at line <a class="el" href="fpc__com__link_8c_source.html#l00073">73</a> of file <a class="el" href="fpc__com__link_8c_source.html">fpc_com_link.c</a>.</p>
<p>References <a class="el" href="fpc__com__packets_8h_source.html#l00063">fpc_com_packet_link::channel</a>, <a class="el" href="fpc__com__packets_8h_source.html#l00069">fpc_com_packet_link::crc</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00066">fpc_com_chain::crc_calc</a>, <a class="el" href="fpc__com__packets_8h_source.html#l00067">fpc_com_packet_link::data</a>, <a class="el" href="fpc__com__packets_8h_source.html#l00032">FPC_COM_ACK</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00151">FPC_COM_CHAIN_RX</a>, <a class="el" href="fpc__com__result_8h_source.html#l00035">FPC_COM_RESULT_INVALID_ARGUMENT</a>, <a class="el" href="fpc__com__result_8h_source.html#l00037">FPC_COM_RESULT_IO_ERROR</a>, <a class="el" href="fpc__com__result_8h_source.html#l00033">FPC_COM_RESULT_OK</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00121">fpc_com_chain::phy_mtu_buffer</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00119">fpc_com_chain::phy_mtu_size</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00116">fpc_com_chain::phy_rx</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00125">fpc_com_chain::phy_timeout_rx</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00123">fpc_com_chain::phy_timeout_tx</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00113">fpc_com_chain::phy_tx</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00137">fpc_com_chain::session</a>, and <a class="el" href="fpc__com__packets_8h_source.html#l00065">fpc_com_packet_link::size</a>.</p>
</div>
</div>
<a class="anchor" id="a43a8a308255ea41e7b7cdefd63a90d14"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="fpc__com__result_8h.html#a49b1f9a24f677d396227ea645494070a">fpc_com_result_t</a> fpc_com_link_transmit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fpc__com__packets_8h.html#af6fc3a46c87f1ad2a452eb822f2a0942">fpc_com_packet_link_t</a> *&#160;</td>
<td class="paramname"><em>packet</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="fpc__com__chain_8h.html#a1530dd4e8729e5f546a96abc5ac0a6de">fpc_com_chain_t</a> *&#160;</td>
<td class="paramname"><em>chain</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sends a packet over the physical link in blocking mode. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">packet</td><td>Packet to transmit. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">chain</td><td>The communication chain to use. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="fpc__com__result_8h.html#a49b1f9a24f677d396227ea645494070a">fpc_com_result_t</a> </dd></dl>
<p>Definition at line <a class="el" href="fpc__com__link_8c_source.html#l00027">27</a> of file <a class="el" href="fpc__com__link_8c_source.html">fpc_com_link.c</a>.</p>
<p>References <a class="el" href="fpc__com__packets_8h_source.html#l00063">fpc_com_packet_link::channel</a>, <a class="el" href="fpc__com__packets_8h_source.html#l00069">fpc_com_packet_link::crc</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00066">fpc_com_chain::crc_calc</a>, <a class="el" href="fpc__com__packets_8h_source.html#l00067">fpc_com_packet_link::data</a>, <a class="el" href="fpc__com__packets_8h_source.html#l00032">FPC_COM_ACK</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00150">FPC_COM_CHAIN_TX</a>, <a class="el" href="fpc__com__link_8c_source.html#l00126">fpc_com_link_get_overhead()</a>, <a class="el" href="fpc__com__result_8h_source.html#l00035">FPC_COM_RESULT_INVALID_ARGUMENT</a>, <a class="el" href="fpc__com__result_8h_source.html#l00037">FPC_COM_RESULT_IO_ERROR</a>, <a class="el" href="fpc__com__result_8h_source.html#l00033">FPC_COM_RESULT_OK</a>, <a class="el" href="fpc__com__result_8h_source.html#l00038">FPC_COM_RESULT_TIMEOUT</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00121">fpc_com_chain::phy_mtu_buffer</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00116">fpc_com_chain::phy_rx</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00125">fpc_com_chain::phy_timeout_rx</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00123">fpc_com_chain::phy_timeout_tx</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00113">fpc_com_chain::phy_tx</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00137">fpc_com_chain::session</a>, and <a class="el" href="fpc__com__packets_8h_source.html#l00065">fpc_com_packet_link::size</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="fpc__com__link_8c_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.svg" width="396" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="fpc__com__link_8c.html">fpc_com_link.c</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:44 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,6 +0,0 @@
var fpc__com__link_8c =
[
[ "fpc_com_link_get_overhead", "fpc__com__link_8c.html#a3e60e21a5ac4ad4881e4929de2f3c2f4", null ],
[ "fpc_com_link_receive", "fpc__com__link_8c.html#ae64b80cd91fbfe44abc06dc52eacf739", null ],
[ "fpc_com_link_transmit", "fpc__com__link_8c.html#a43a8a308255ea41e7b7cdefd63a90d14", null ]
];

View File

@ -1,7 +0,0 @@
<map id="src/fpc_com_link.c" name="src/fpc_com_link.c">
<area shape="rect" id="node4" href="$fpc__com__link_8h.html" title="Communication link interface. " alt="" coords="315,80,426,107"/>
<area shape="rect" id="node7" href="$fpc__com__result_8h.html" title="Communication result type definitions. " alt="" coords="399,229,521,256"/>
<area shape="rect" id="node8" href="$fpc__com__chain_8h.html" title="Communication chain type definitions. " alt="" coords="246,155,367,181"/>
<area shape="rect" id="node9" href="$fpc__hcp__common_8h.html" title="Host Communication Protocol common type definitions. " alt="" coords="28,229,164,256"/>
<area shape="rect" id="node10" href="$fpc__com__packets_8h.html" title="Communication packet type definitions. " alt="" coords="239,229,375,256"/>
</map>

View File

@ -1 +0,0 @@
5ae4569dea06540c6706ee9e9b27db36

View File

@ -1,153 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: src/fpc_com_link.c Pages: 1 -->
<svg width="413pt" height="252pt"
viewBox="0.00 0.00 412.65 252.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 248)">
<title>src/fpc_com_link.c</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-248 408.652,-248 408.652,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node"><title>Node1</title>
<polygon fill="#bfbfbf" stroke="black" points="140.5,-224.5 140.5,-243.5 239.5,-243.5 239.5,-224.5 140.5,-224.5"/>
<text text-anchor="middle" x="190" y="-231.5" font-family="Helvetica,sans-Serif" font-size="10.00">src/fpc_com_link.c</text>
</g>
<!-- Node2 -->
<g id="node2" class="node"><title>Node2</title>
<polygon fill="white" stroke="#bfbfbf" points="98.5,-168.5 98.5,-187.5 147.5,-187.5 147.5,-168.5 98.5,-168.5"/>
<text text-anchor="middle" x="123" y="-175.5" font-family="Helvetica,sans-Serif" font-size="10.00">string.h</text>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge"><title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M179.235,-224.324C169.234,-216.263 154.113,-204.077 142.07,-194.369"/>
<polygon fill="midnightblue" stroke="midnightblue" points="143.943,-191.384 133.961,-187.834 139.55,-196.834 143.943,-191.384"/>
</g>
<!-- Node3 -->
<g id="node3" class="node"><title>Node3</title>
<polygon fill="white" stroke="#bfbfbf" points="166,-168.5 166,-187.5 214,-187.5 214,-168.5 166,-168.5"/>
<text text-anchor="middle" x="190" y="-175.5" font-family="Helvetica,sans-Serif" font-size="10.00">stdlib.h</text>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2" class="edge"><title>Node1&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M190,-224.083C190,-217.006 190,-206.861 190,-197.986"/>
<polygon fill="midnightblue" stroke="midnightblue" points="193.5,-197.751 190,-187.751 186.5,-197.751 193.5,-197.751"/>
</g>
<!-- Node4 -->
<g id="node4" class="node"><title>Node4</title>
<g id="a_node4"><a xlink:href="fpc__com__link_8h.html" target="_top" xlink:title="Communication link interface. ">
<polygon fill="white" stroke="black" points="232.5,-168.5 232.5,-187.5 315.5,-187.5 315.5,-168.5 232.5,-168.5"/>
<text text-anchor="middle" x="274" y="-175.5" font-family="Helvetica,sans-Serif" font-size="10.00">fpc_com_link.h</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3" class="edge"><title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M203.496,-224.324C216.6,-215.9 236.712,-202.971 252.107,-193.074"/>
<polygon fill="midnightblue" stroke="midnightblue" points="254.018,-196.006 260.537,-187.655 250.233,-190.118 254.018,-196.006"/>
</g>
<!-- Node5 -->
<g id="node5" class="node"><title>Node5</title>
<polygon fill="white" stroke="#bfbfbf" points="0,-0.5 0,-19.5 56,-19.5 56,-0.5 0,-0.5"/>
<text text-anchor="middle" x="28" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">stdbool.h</text>
</g>
<!-- Node4&#45;&gt;Node5 -->
<g id="edge4" class="edge"><title>Node4&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M237.227,-168.474C170.736,-152.232 34.8958,-114.982 8,-76 -1.91522,-61.6293 6.29763,-42.1725 15.004,-28.3004"/>
<polygon fill="midnightblue" stroke="midnightblue" points="18.1201,-29.9454 20.8937,-19.7201 12.3488,-25.984 18.1201,-29.9454"/>
</g>
<!-- Node6 -->
<g id="node6" class="node"><title>Node6</title>
<polygon fill="white" stroke="#bfbfbf" points="201.5,-0.5 201.5,-19.5 250.5,-19.5 250.5,-0.5 201.5,-0.5"/>
<text text-anchor="middle" x="226" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">stdint.h</text>
</g>
<!-- Node4&#45;&gt;Node6 -->
<g id="edge5" class="edge"><title>Node4&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M295.497,-168.389C339.344,-149.592 432.028,-102.806 396,-56 379.622,-34.7223 305.492,-21.4395 260.705,-15.2105"/>
<polygon fill="midnightblue" stroke="midnightblue" points="260.921,-11.7082 250.544,-13.8479 259.99,-18.646 260.921,-11.7082"/>
</g>
<!-- Node7 -->
<g id="node7" class="node"><title>Node7</title>
<g id="a_node7"><a xlink:href="fpc__com__result_8h.html" target="_top" xlink:title="Communication result type definitions. ">
<polygon fill="white" stroke="black" points="295,-56.5 295,-75.5 387,-75.5 387,-56.5 295,-56.5"/>
<text text-anchor="middle" x="341" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">fpc_com_result.h</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node7 -->
<g id="edge6" class="edge"><title>Node4&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M279.257,-168.368C290.265,-150.296 315.92,-108.176 330.458,-84.3074"/>
<polygon fill="midnightblue" stroke="midnightblue" points="333.554,-85.9526 335.767,-75.5914 327.576,-82.3112 333.554,-85.9526"/>
</g>
<!-- Node8 -->
<g id="node8" class="node"><title>Node8</title>
<g id="a_node8"><a xlink:href="fpc__com__chain_8h.html" target="_top" xlink:title="Communication chain type definitions. ">
<polygon fill="white" stroke="black" points="180.5,-112.5 180.5,-131.5 271.5,-131.5 271.5,-112.5 180.5,-112.5"/>
<text text-anchor="middle" x="226" y="-119.5" font-family="Helvetica,sans-Serif" font-size="10.00">fpc_com_chain.h</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node8 -->
<g id="edge8" class="edge"><title>Node4&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M266.074,-168.083C259.154,-160.298 248.935,-148.801 240.548,-139.367"/>
<polygon fill="midnightblue" stroke="midnightblue" points="243.038,-136.9 233.779,-131.751 237.806,-141.55 243.038,-136.9"/>
</g>
<!-- Node7&#45;&gt;Node6 -->
<g id="edge7" class="edge"><title>Node7&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M322.778,-56.4435C304.104,-47.6751 274.844,-33.9355 253.383,-23.8579"/>
<polygon fill="midnightblue" stroke="midnightblue" points="254.676,-20.5988 244.137,-19.5164 251.701,-26.935 254.676,-20.5988"/>
</g>
<!-- Node8&#45;&gt;Node6 -->
<g id="edge9" class="edge"><title>Node8&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M206.704,-112.48C192.571,-105.081 174.443,-92.887 166,-76 155.65,-55.2997 178.277,-36.4462 198.643,-24.4384"/>
<polygon fill="midnightblue" stroke="midnightblue" points="200.371,-27.4821 207.422,-19.5735 196.978,-21.3594 200.371,-27.4821"/>
</g>
<!-- Node8&#45;&gt;Node7 -->
<g id="edge10" class="edge"><title>Node8&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M244.222,-112.444C262.896,-103.675 292.156,-89.9355 313.617,-79.8579"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.299,-82.935 322.863,-75.5164 312.324,-76.5988 315.299,-82.935"/>
</g>
<!-- Node9 -->
<g id="node9" class="node"><title>Node9</title>
<g id="a_node9"><a xlink:href="fpc__hcp__common_8h.html" target="_top" xlink:title="Host Communication Protocol common type definitions. ">
<polygon fill="white" stroke="black" points="17,-56.5 17,-75.5 119,-75.5 119,-56.5 17,-56.5"/>
<text text-anchor="middle" x="68" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">fpc_hcp_common.h</text>
</a>
</g>
</g>
<!-- Node8&#45;&gt;Node9 -->
<g id="edge11" class="edge"><title>Node8&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M200.964,-112.444C174.384,-103.359 132.191,-88.9388 102.477,-78.7831"/>
<polygon fill="midnightblue" stroke="midnightblue" points="103.513,-75.4386 92.9184,-75.5164 101.249,-82.0625 103.513,-75.4386"/>
</g>
<!-- Node10 -->
<g id="node10" class="node"><title>Node10</title>
<g id="a_node10"><a xlink:href="fpc__com__packets_8h.html" target="_top" xlink:title="Communication packet type definitions. ">
<polygon fill="white" stroke="black" points="175,-56.5 175,-75.5 277,-75.5 277,-56.5 175,-56.5"/>
<text text-anchor="middle" x="226" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">fpc_com_packets.h</text>
</a>
</g>
</g>
<!-- Node8&#45;&gt;Node10 -->
<g id="edge14" class="edge"><title>Node8&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M226,-112.083C226,-105.006 226,-94.8611 226,-85.9865"/>
<polygon fill="midnightblue" stroke="midnightblue" points="229.5,-85.751 226,-75.7511 222.5,-85.7511 229.5,-85.751"/>
</g>
<!-- Node9&#45;&gt;Node5 -->
<g id="edge13" class="edge"><title>Node9&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M61.3948,-56.083C55.7448,-48.4554 47.4552,-37.2645 40.5488,-27.9408"/>
<polygon fill="midnightblue" stroke="midnightblue" points="43.2471,-25.7034 34.4823,-19.7511 37.6221,-29.87 43.2471,-25.7034"/>
</g>
<!-- Node9&#45;&gt;Node6 -->
<g id="edge12" class="edge"><title>Node9&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M93.0356,-56.4435C119.694,-47.3324 162.057,-32.8539 191.785,-22.6936"/>
<polygon fill="midnightblue" stroke="midnightblue" points="193.011,-25.9736 201.342,-19.4275 190.747,-19.3497 193.011,-25.9736"/>
</g>
<!-- Node10&#45;&gt;Node6 -->
<g id="edge15" class="edge"><title>Node10&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M226,-56.083C226,-49.0059 226,-38.8611 226,-29.9865"/>
<polygon fill="midnightblue" stroke="midnightblue" points="229.5,-29.751 226,-19.7511 222.5,-29.7511 229.5,-29.751"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 9.1 KiB

View File

@ -1,3 +0,0 @@
<map id="fpc_com_link_transmit" name="fpc_com_link_transmit">
<area shape="rect" id="node2" href="$fpc__com__link_8c.html#a3e60e21a5ac4ad4881e4929de2f3c2f4" title="Returns the overhead of the layer. " alt="" coords="207,5,391,32"/>
</map>

View File

@ -1 +0,0 @@
1079db44f9fcfecbed78b0a2bbb98b54

View File

@ -1,31 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: fpc_com_link_transmit Pages: 1 -->
<svg width="297pt" height="28pt"
viewBox="0.00 0.00 297.00 28.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 24)">
<title>fpc_com_link_transmit</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-24 293,-24 293,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node"><title>Node1</title>
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-19.5 115,-19.5 115,-0.5 0,-0.5"/>
<text text-anchor="middle" x="57.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">fpc_com_link_transmit</text>
</g>
<!-- Node2 -->
<g id="node2" class="node"><title>Node2</title>
<g id="a_node2"><a xlink:href="fpc__com__link_8c.html#a3e60e21a5ac4ad4881e4929de2f3c2f4" target="_top" xlink:title="Returns the overhead of the layer. ">
<polygon fill="white" stroke="black" points="151,-0.5 151,-19.5 289,-19.5 289,-0.5 151,-0.5"/>
<text text-anchor="middle" x="220" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">fpc_com_link_get_overhead</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge"><title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M115.086,-10C123.389,-10 132.064,-10 140.708,-10"/>
<polygon fill="midnightblue" stroke="midnightblue" points="140.817,-13.5001 150.817,-10 140.817,-6.5001 140.817,-13.5001"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

File diff suppressed because one or more lines are too long

View File

@ -1,242 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Host Communication Protocol: inc/fpc_com_link.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Host Communication Protocol
&#160;<span id="projectnumber">2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('fpc__com__link_8h.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">fpc_com_link.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Communication link interface.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;stdbool.h&gt;</code><br />
<code>#include &lt;stdint.h&gt;</code><br />
<code>#include &quot;<a class="el" href="fpc__com__result_8h_source.html">fpc_com_result.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="fpc__com__chain_8h_source.html">fpc_com_chain.h</a>&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for fpc_com_link.h:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="fpc__com__link_8h__incl.svg" width="551" height="262"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div><div class="textblock"><div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="fpc__com__link_8h__dep__incl.svg" width="331" height="112"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
<p><a href="fpc__com__link_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a43a8a308255ea41e7b7cdefd63a90d14"><td class="memItemLeft" align="right" valign="top"><a class="el" href="fpc__com__result_8h.html#a49b1f9a24f677d396227ea645494070a">fpc_com_result_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__com__link_8h.html#a43a8a308255ea41e7b7cdefd63a90d14">fpc_com_link_transmit</a> (<a class="el" href="fpc__com__packets_8h.html#af6fc3a46c87f1ad2a452eb822f2a0942">fpc_com_packet_link_t</a> *packet, <a class="el" href="fpc__com__chain_8h.html#a1530dd4e8729e5f546a96abc5ac0a6de">fpc_com_chain_t</a> *chain)</td></tr>
<tr class="memdesc:a43a8a308255ea41e7b7cdefd63a90d14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends a packet over the physical link in blocking mode. <a href="#a43a8a308255ea41e7b7cdefd63a90d14">More...</a><br /></td></tr>
<tr class="separator:a43a8a308255ea41e7b7cdefd63a90d14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae64b80cd91fbfe44abc06dc52eacf739"><td class="memItemLeft" align="right" valign="top"><a class="el" href="fpc__com__result_8h.html#a49b1f9a24f677d396227ea645494070a">fpc_com_result_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__com__link_8h.html#ae64b80cd91fbfe44abc06dc52eacf739">fpc_com_link_receive</a> (<a class="el" href="fpc__com__packets_8h.html#af6fc3a46c87f1ad2a452eb822f2a0942">fpc_com_packet_link_t</a> *packet, <a class="el" href="fpc__com__chain_8h.html#a1530dd4e8729e5f546a96abc5ac0a6de">fpc_com_chain_t</a> *chain)</td></tr>
<tr class="memdesc:ae64b80cd91fbfe44abc06dc52eacf739"><td class="mdescLeft">&#160;</td><td class="mdescRight">Receives a packet from the physical link. <a href="#ae64b80cd91fbfe44abc06dc52eacf739">More...</a><br /></td></tr>
<tr class="separator:ae64b80cd91fbfe44abc06dc52eacf739"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e60e21a5ac4ad4881e4929de2f3c2f4"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fpc__com__link_8h.html#a3e60e21a5ac4ad4881e4929de2f3c2f4">fpc_com_link_get_overhead</a> (uint16_t *offset)</td></tr>
<tr class="memdesc:a3e60e21a5ac4ad4881e4929de2f3c2f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the overhead of the layer. <a href="#a3e60e21a5ac4ad4881e4929de2f3c2f4">More...</a><br /></td></tr>
<tr class="separator:a3e60e21a5ac4ad4881e4929de2f3c2f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Communication link interface. </p>
<p>Definition in file <a class="el" href="fpc__com__link_8h_source.html">fpc_com_link.h</a>.</p>
</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a3e60e21a5ac4ad4881e4929de2f3c2f4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t fpc_com_link_get_overhead </td>
<td>(</td>
<td class="paramtype">uint16_t *&#160;</td>
<td class="paramname"><em>offset</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the overhead of the layer. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">offset</td><td>The offset to the packet data. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Overhead size in bytes. </dd></dl>
<p>Definition at line <a class="el" href="fpc__com__link_8c_source.html#l00126">126</a> of file <a class="el" href="fpc__com__link_8c_source.html">fpc_com_link.c</a>.</p>
<p>References <a class="el" href="fpc__com__packets_8h_source.html#l00063">fpc_com_packet_link::channel</a>, <a class="el" href="fpc__com__packets_8h_source.html#l00069">fpc_com_packet_link::crc</a>, and <a class="el" href="fpc__com__packets_8h_source.html#l00065">fpc_com_packet_link::size</a>.</p>
</div>
</div>
<a class="anchor" id="ae64b80cd91fbfe44abc06dc52eacf739"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="fpc__com__result_8h.html#a49b1f9a24f677d396227ea645494070a">fpc_com_result_t</a> fpc_com_link_receive </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fpc__com__packets_8h.html#af6fc3a46c87f1ad2a452eb822f2a0942">fpc_com_packet_link_t</a> *&#160;</td>
<td class="paramname"><em>packet</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="fpc__com__chain_8h.html#a1530dd4e8729e5f546a96abc5ac0a6de">fpc_com_chain_t</a> *&#160;</td>
<td class="paramname"><em>chain</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Receives a packet from the physical link. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">packet</td><td>Packet to populate. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">chain</td><td>The communication chain to use. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="fpc__com__result_8h.html#a49b1f9a24f677d396227ea645494070a">fpc_com_result_t</a> </dd></dl>
<p>Definition at line <a class="el" href="fpc__com__link_8c_source.html#l00073">73</a> of file <a class="el" href="fpc__com__link_8c_source.html">fpc_com_link.c</a>.</p>
<p>References <a class="el" href="fpc__com__packets_8h_source.html#l00063">fpc_com_packet_link::channel</a>, <a class="el" href="fpc__com__packets_8h_source.html#l00069">fpc_com_packet_link::crc</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00066">fpc_com_chain::crc_calc</a>, <a class="el" href="fpc__com__packets_8h_source.html#l00067">fpc_com_packet_link::data</a>, <a class="el" href="fpc__com__packets_8h_source.html#l00032">FPC_COM_ACK</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00151">FPC_COM_CHAIN_RX</a>, <a class="el" href="fpc__com__result_8h_source.html#l00035">FPC_COM_RESULT_INVALID_ARGUMENT</a>, <a class="el" href="fpc__com__result_8h_source.html#l00037">FPC_COM_RESULT_IO_ERROR</a>, <a class="el" href="fpc__com__result_8h_source.html#l00033">FPC_COM_RESULT_OK</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00121">fpc_com_chain::phy_mtu_buffer</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00119">fpc_com_chain::phy_mtu_size</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00116">fpc_com_chain::phy_rx</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00125">fpc_com_chain::phy_timeout_rx</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00123">fpc_com_chain::phy_timeout_tx</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00113">fpc_com_chain::phy_tx</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00137">fpc_com_chain::session</a>, and <a class="el" href="fpc__com__packets_8h_source.html#l00065">fpc_com_packet_link::size</a>.</p>
</div>
</div>
<a class="anchor" id="a43a8a308255ea41e7b7cdefd63a90d14"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="fpc__com__result_8h.html#a49b1f9a24f677d396227ea645494070a">fpc_com_result_t</a> fpc_com_link_transmit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fpc__com__packets_8h.html#af6fc3a46c87f1ad2a452eb822f2a0942">fpc_com_packet_link_t</a> *&#160;</td>
<td class="paramname"><em>packet</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="fpc__com__chain_8h.html#a1530dd4e8729e5f546a96abc5ac0a6de">fpc_com_chain_t</a> *&#160;</td>
<td class="paramname"><em>chain</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sends a packet over the physical link in blocking mode. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">packet</td><td>Packet to transmit. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">chain</td><td>The communication chain to use. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="fpc__com__result_8h.html#a49b1f9a24f677d396227ea645494070a">fpc_com_result_t</a> </dd></dl>
<p>Definition at line <a class="el" href="fpc__com__link_8c_source.html#l00027">27</a> of file <a class="el" href="fpc__com__link_8c_source.html">fpc_com_link.c</a>.</p>
<p>References <a class="el" href="fpc__com__packets_8h_source.html#l00063">fpc_com_packet_link::channel</a>, <a class="el" href="fpc__com__packets_8h_source.html#l00069">fpc_com_packet_link::crc</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00066">fpc_com_chain::crc_calc</a>, <a class="el" href="fpc__com__packets_8h_source.html#l00067">fpc_com_packet_link::data</a>, <a class="el" href="fpc__com__packets_8h_source.html#l00032">FPC_COM_ACK</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00150">FPC_COM_CHAIN_TX</a>, <a class="el" href="fpc__com__link_8c_source.html#l00126">fpc_com_link_get_overhead()</a>, <a class="el" href="fpc__com__result_8h_source.html#l00035">FPC_COM_RESULT_INVALID_ARGUMENT</a>, <a class="el" href="fpc__com__result_8h_source.html#l00037">FPC_COM_RESULT_IO_ERROR</a>, <a class="el" href="fpc__com__result_8h_source.html#l00033">FPC_COM_RESULT_OK</a>, <a class="el" href="fpc__com__result_8h_source.html#l00038">FPC_COM_RESULT_TIMEOUT</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00121">fpc_com_chain::phy_mtu_buffer</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00116">fpc_com_chain::phy_rx</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00125">fpc_com_chain::phy_timeout_rx</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00123">fpc_com_chain::phy_timeout_tx</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00113">fpc_com_chain::phy_tx</a>, <a class="el" href="fpc__com__chain_8h_source.html#l00137">fpc_com_chain::session</a>, and <a class="el" href="fpc__com__packets_8h_source.html#l00065">fpc_com_packet_link::size</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="fpc__com__link_8h_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.svg" width="396" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_bfccd401955b95cf8c75461437045ac0.html">inc</a></li><li class="navelem"><a class="el" href="fpc__com__link_8h.html">fpc_com_link.h</a></li>
<li class="footer">Generated on Tue Mar 24 2020 11:09:44 for Host Communication Protocol by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>

View File

@ -1,6 +0,0 @@
var fpc__com__link_8h =
[
[ "fpc_com_link_get_overhead", "fpc__com__link_8h.html#a3e60e21a5ac4ad4881e4929de2f3c2f4", null ],
[ "fpc_com_link_receive", "fpc__com__link_8h.html#ae64b80cd91fbfe44abc06dc52eacf739", null ],
[ "fpc_com_link_transmit", "fpc__com__link_8h.html#a43a8a308255ea41e7b7cdefd63a90d14", null ]
];

View File

@ -1,4 +0,0 @@
<map id="inc/fpc_com_link.h" name="inc/fpc_com_link.h">
<area shape="rect" id="node2" href="$fpc__com__link_8c.html" title="Communication link layer implementation. " alt="" coords="5,80,137,107"/>
<area shape="rect" id="node3" href="$fpc__com__transport_8c.html" title="Communication transport layer implementation. " alt="" coords="162,80,325,107"/>
</map>

Some files were not shown because too many files have changed in this diff Show More