Mistake on this page?
Report an issue in GitHub or email us
whd_thread.h
Go to the documentation of this file.
1 /*
2  * Copyright 2021, Cypress Semiconductor Corporation (an Infineon company)
3  * SPDX-License-Identifier: Apache-2.0
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 /** @file
19  * The whd Thread allows thread safe access to the whd hardware bus
20  * This is an whd internal file and should not be used by functions outside whd.
21  *
22  * This file provides prototypes for functions which allow multiple threads to use the whd hardware bus (SDIO or SPI)
23  * This is achieved by having a single thread (the "whd Thread") which queues messages to be sent, sending
24  * them sequentially, as well as receiving messages as they arrive.
25  *
26  * Messages to be sent come from the @ref whd_sdpcm_send_common function in whd_sdpcm.c . The messages already
27  * contain SDPCM headers, but not any bus headers (GSPI), and are passed via a queue
28  * This function can be called from any thread.
29  *
30  * Messages are received by way of a callback supplied by in whd_sdpcm.c - whd_sdpcm_process_rx_packet
31  * Received messages are delivered in the context of the whd Thread, so the callback function needs to avoid blocking.
32  *
33  */
34 #include "cyabs_rtos.h"
35 #include "whd.h"
36 
37 #ifndef INCLUDED_WHD_THREAD_H_
38 #define INCLUDED_WHD_THREAD_H_
39 
40 #ifdef __cplusplus
41 extern "C"
42 {
43 #endif
44 
45 /******************************************************
46 * Constants
47 ******************************************************/
48 #define WHD_THREAD_RX_BOUND (20)
49 #define WHD_MAX_BUS_FAIL (10)
50 
51 typedef struct whd_thread_info
52 {
53 
54  volatile whd_bool_t thread_quit_flag;
55  volatile whd_bool_t whd_inited;
56  cy_thread_t whd_thread;
57  cy_semaphore_t transceive_semaphore;
58  volatile whd_bool_t bus_interrupt;
59  void *thread_stack_start;
60  uint32_t thread_stack_size;
61  cy_thread_priority_t thread_priority;
62 
64 
65 void whd_thread_info_init(whd_driver_t whd_driver, whd_init_config_t *whd_init_config);
66 
67 /** Initialises the whd Thread
68  *
69  * Initialises the whd thread, and its flags/semaphores,
70  * then starts it running
71  *
72  * @return whd result code
73  */
74 extern whd_result_t whd_thread_init(whd_driver_t whd_driver);
75 
76 
77 /** Terminates the whd Thread
78  *
79  * Sets a flag then wakes the whd Thread to force it to terminate.
80  *
81  */
82 extern void whd_thread_quit(whd_driver_t whd_driver);
83 
84 
85 extern void whd_thread_notify(whd_driver_t whd_driver);
86 extern void whd_thread_notify_irq(whd_driver_t whd_driver);
87 
88 #ifdef __cplusplus
89 } /* extern "C" */
90 #endif
91 
92 #endif /* ifndef INCLUDED_WHD_THREAD_H_ */
93 
whd_result_t whd_thread_init(whd_driver_t whd_driver)
Initialises the whd Thread.
Provides abstract pointer type to act as instance for: driver, interface, buffer funcs, network funcs, resource funcs and bus funcs.
void whd_thread_quit(whd_driver_t whd_driver)
Terminates the whd Thread.
whd_bool_t
Boolean values.
Definition: whd_types.h:162
uint32_t whd_result_t
WHD result is specified as uint32_t value.
Definition: whd_types.h:776
Structure for storing WHD init configurations.
Definition: whd.h:70
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.