source: azure_iot_hub_f767zi/trunk/asp_baseplatform/usb/tusb_rtos.c@ 457

Last change on this file since 457 was 457, checked in by coas-nagasima, 4 years ago

ファイルを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-csrc;charset=UTF-8
File size: 4.7 KB
Line 
1/*
2 * TOPPERS BASE PLATFORM MIDDLEWARE
3 *
4 * Copyright (C) 2017-2017 by TOPPERS PROJECT
5 * Educational Working Group.
6 *
7 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
8 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
9 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
10 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
11 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
12 * スコード中に含まれていること.
13 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
14 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
15 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
16 * の無保証規定を掲載すること.
17 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
18 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
19 * と.
20 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
21 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
22 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
23 * 報告すること.
24 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
25 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
26 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
27 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
28 * 免責すること.
29 *
30 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
31 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
32 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
33 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
34 * の責任を負わない.
35 *
36 * @(#) $Id$
37 */
38/*
39 * USB Middleware RTOS依存部
40 */
41
42#include "tusb_rtos.h"
43#include "kernel_cfg.h"
44
45
46/*
47 * タスク状態でのメッセージ送信
48 */
49ER
50tusbSendData(ID qid, uint8_t evt, uint8_t prm1, uint8_t prm2, uint8_t prm3)
51{
52 intptr_t data;
53 ER ercd;
54
55 data = (evt << 24) | (prm1 << 16) | (prm2 << 8) | prm3;
56 ercd = psnd_dtq(qid, data);
57 if(ercd != E_OK){
58 syslog_5(LOG_ERROR, "tusbSendData send(%d) error [%02x][%02x][%02x][%02x]", qid, evt, prm1, prm2, prm3);
59 }
60 return ercd;
61}
62
63/*
64 * 非タスク状態でのメッセージ送信
65 */
66ER
67tusbiSendData(ID qid, uint8_t evt, uint8_t prm1, uint8_t prm2, uint8_t prm3)
68{
69 intptr_t data;
70 ER ercd;
71
72 data = (evt << 24) | (prm1 << 16) | (prm2 << 8) | prm3;
73 ercd = ipsnd_dtq(qid, data);
74 if(ercd != E_OK){
75 syslog_5(LOG_ERROR, "tusbiSendData send(%d) error [%02x][%02x][%02x][%02x]", qid, evt, prm1, prm2, prm3);
76 }
77 return ercd;
78}
79
80/*
81 * タスク状態でのメッセージ受信
82 */
83ER
84tusbRecvData(ID qid, uint8_t *pmes, uint32_t timeout)
85{
86 intptr_t data;
87 ER ercd;
88
89 if(timeout == 0)
90 ercd = rcv_dtq(qid, &data);
91 else
92 ercd = trcv_dtq(qid, &data, timeout);
93 if(ercd != E_OK){
94 syslog_1(LOG_ERROR, "tusbRecvData(%d) error !", qid);
95 }
96 else{
97 pmes[0] = (data >> 24) & 0xff;
98 pmes[1] = (data >> 16) & 0xff;
99 pmes[2] = (data >> 8) & 0xff;
100 pmes[3] = data & 0xff;
101 }
102 return ercd;
103}
104
105/*
106 * タスクID取出し
107 */
108int32_t
109tusbGetTaskID(void)
110{
111 ER ercd;
112 ID tid = 0;
113
114 ercd = get_tid(&tid);
115 if(ercd != E_OK){
116 syslog_1(LOG_ERROR, "tusbhGetTaskID get fail(%d) !", ercd);
117 return 0;
118 }
119 else
120 return (int32_t)tid;
121}
122
123/*
124 * タスク起動
125 */
126ER
127tusbStartTask(ID taskid)
128{
129 ER ercd = act_tsk(taskid);
130
131 if(ercd != E_OK)
132 syslog_2(LOG_ERROR, "tusbStartTask actvate error id(%d) error(%d) !", taskid, ercd);
133 return ercd;
134}
135
136/*
137 * タイマー制御
138 */
139ER
140tusbTimerControl(uint8_t activate)
141{
142 ER ercd;
143
144 if(activate == 0)
145 ercd = stp_cyc(TUSBH_CYC_HDR);
146 else
147 ercd = sta_cyc(TUSBH_CYC_HDR);
148 return ercd;
149}
150
151/*
152 * ローカルなmemset関数
153 */
154void
155tusbmemset(void *d, const char val, int len)
156{
157 char *dd = d;
158 int i;
159 for(i = 0 ; i < len ; i++){
160 *dd++ = val;
161 }
162}
163
164/*
165 * ローカルなmemcpy関数
166 */
167void
168tusbmemcpy(void *d, void *s, int len)
169{
170 uint8_t *dd = d;
171 uint8_t *ss = s;
172 int i;
173 for(i = 0 ; i < len ; i++){
174 *dd++ = *ss++;
175 }
176}
177
Note: See TracBrowser for help on using the repository browser.