এসপিআই স্লেভ

এই মডিউলটি SPI স্লেভ যোগাযোগের জন্য প্ল্যাটফর্ম বিমূর্ততা অন্তর্ভুক্ত করে।

সারসংক্ষেপ

Typedefs

otPlatSpiSlaveTransactionCompleteCallback )(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength) typedef
bool(*
নির্দেশ করে যে একটি SPI লেনদেন প্রদত্ত দৈর্ঘ্যের সাথে সম্পন্ন হয়েছে।
otPlatSpiSlaveTransactionProcessCallback )(void *aContext) typedef
void(*
একটি লেনদেন সম্পূর্ণ কলব্যাক কল করার পরে আমন্ত্রণ জানানো হয় এবং প্রয়োজনীয় পরবর্তী প্রক্রিয়াকরণ করতে TRUE ফেরত দেয়।

ফাংশন

otPlatSpiSlaveDisable (void)
void
SPI স্লেভ ইন্টারফেস বন্ধ করুন এবং নিষ্ক্রিয় করুন।
otPlatSpiSlaveEnable ( otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback, otPlatSpiSlaveTransactionProcessCallback aProcessCallback, void *aContext)
SPI স্লেভ ইন্টারফেস আরম্ভ করুন।
otPlatSpiSlavePrepareTransaction (uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, bool aRequestTransactionFlag)
পরবর্তী SPI লেনদেনের জন্য ডেটা প্রস্তুত করুন।

Typedefs

otPlatSpiSlaveTransactionCompleteCallback

bool(* otPlatSpiSlaveTransactionCompleteCallback)(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength)

নির্দেশ করে যে একটি SPI লেনদেন প্রদত্ত দৈর্ঘ্যের সাথে সম্পন্ন হয়েছে।

স্লেভের কাছে লেখা তথ্যটি পূর্ববর্তী কলে otPlatSpiSlavePrepareTransaction() এর জন্য aInputBuf আর্গুমেন্ট দ্বারা নির্দেশিত পয়েন্টারে লেখা হয়েছে।

একবার এই ফাংশনটি কল করা হলে, otPlatSpiSlavePrepareTransaction() অবৈধ এবং পরবর্তী লেনদেন বৈধ হওয়ার জন্য আবার কল করতে হবে৷

মনে রাখবেন যে এই ফাংশনটি সর্বদা একটি লেনদেনের শেষে কল করা হয়, এমনকি যদি otPlatSpiSlavePrepareTransaction() এখনও কল করা না হয়। এই ধরনের ক্ষেত্রে, aOutputBufLen এবং aInputBufLen শূন্য হবে।

এই কলব্যাকটি আইএসআর প্রসঙ্গে কল করা যেতে পারে। এই ফাংশন থেকে রিটার্ন মান নির্দেশ করে যদি আরও কোনো প্রক্রিয়াকরণের প্রয়োজন হয়। যদি TRUE ফেরত দেওয়া হয় তাহলে প্ল্যাটফর্ম spi-স্লেভ ড্রাইভার বাস্তবায়ন লেনদেন প্রক্রিয়া কলব্যাক ( aProcessCallback সেট otPlatSpiSlaveEnable() ) চালু করতে হবে যা এই কলব্যাকের বিপরীতে একই OS প্রসঙ্গ থেকে কল করতে হবে যা অন্য কোন OpenThread API/কলব্যাক বলা হয়।

বিস্তারিত
পরামিতি
[in] aContext
প্রসঙ্গ পয়েন্টার otPlatSpiSlaveEnable() এ পাস করা হয়েছে।
[in] aOutputBuf
otPlatSpiSlavePrepareTransaction() এ শেষ কল থেকে aOutputBuf এর মান।
[in] aOutputBufLen
otPlatSpiSlavePrepareTransaction() এ শেষ কল থেকে aOutputBufLen এর মান।
[in] aInputBuf
otPlatSpiSlavePrepareTransaction() এ শেষ কল থেকে aInputBuf-এর মান।
[in] aInputBufLen
otPlatSpiSlavePrepareTransaction() এ শেষ কল থেকে aInputBufLen এর মান
[in] aTransactionLength
বাইটে সম্পন্ন লেনদেনের দৈর্ঘ্য।
রিটার্নস
TRUE যদি এই কল রিটার্ন করার পরে প্ল্যাটফর্মটি প্রসেস কলব্যাক aProcessCallback , FALSE যদি প্রসেস করার কিছু না থাকে এবং প্রসেস কলব্যাক করার দরকার নেই।

otPlatSpiSlaveTransactionProcessCallback

void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)

একটি লেনদেন সম্পূর্ণ কলব্যাক কল করার পরে আমন্ত্রণ জানানো হয় এবং প্রয়োজনীয় পরবর্তী প্রক্রিয়াকরণ করতে TRUE ফেরত দেয়।

otPlatSpiSlaveTransactionCompleteCallback এর বিপরীতে যেটিকে যেকোনো OS প্রসঙ্গ (যেমন, ISR) থেকে কল করা যেতে পারে, এই কলব্যাকটিকে অবশ্যই অন্য যে কোনো OpenThread API/কলব্যাকের মতো একই OS প্রসঙ্গ থেকে কল করতে হবে।

বিস্তারিত
পরামিতি
[in] aContext
প্রসঙ্গ পয়েন্টার otPlatSpiSlaveEnable() এ পাস করা হয়েছে।

ফাংশন

otPlatSpiSlaveDisable

void otPlatSpiSlaveDisable(
  void
)

SPI স্লেভ ইন্টারফেস বন্ধ করুন এবং নিষ্ক্রিয় করুন।

otPlatSpiSlaveEnable

otError otPlatSpiSlaveEnable(
  otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback,
  otPlatSpiSlaveTransactionProcessCallback aProcessCallback,
  void *aContext
)

SPI স্লেভ ইন্টারফেস আরম্ভ করুন।

মনে রাখবেন যে otPlatSPISlavePrepareTransaction() ব্যবহার করে একটি লেনদেন প্রস্তুত না হওয়া পর্যন্ত SPI স্লেভ সম্পূর্ণরূপে প্রস্তুত নয়।

otPlatSPISlavePrepareTransaction() is not called before the master begins a transaction, the resulting SPI transaction will send all এবং সমস্ত প্রাপ্ত বাইট বাতিল করে দেবে।

বিস্তারিত
পরামিতি
[in] aCompleteCallback
লেনদেন সম্পূর্ণ কলব্যাক পয়েন্টার.
[in] aProcessCallback
কলব্যাক প্রক্রিয়া করার জন্য নির্দেশক।
[in] aContext
প্রসঙ্গ পয়েন্টার কলব্যাক পাস করা হবে.
রিটার্ন মান
OT_ERROR_NONE
SPI স্লেভ ইন্টারফেস সফলভাবে সক্ষম হয়েছে৷
OT_ERROR_ALREADY
SPI স্লেভ ইন্টারফেস ইতিমধ্যেই সক্ষম করা আছে৷
OT_ERROR_FAILED
SPI স্লেভ ইন্টারফেস সক্ষম করতে ব্যর্থ হয়েছে৷

otPlatSpiSlavePrepare লেনদেন

otError otPlatSpiSlavePrepareTransaction(
  uint8_t *aOutputBuf,
  uint16_t aOutputBufLen,
  uint8_t *aInputBuf,
  uint16_t aInputBufLen,
  bool aRequestTransactionFlag
)

পরবর্তী SPI লেনদেনের জন্য ডেটা প্রস্তুত করুন।

এসপিআই স্লেভ ড্রাইভার দ্বারা লেনদেন সম্পূর্ণ কলব্যাক কলব্যাক না করা পর্যন্ত বা otPlatSpiSlavePrepareTransaction() এ পরবর্তী কল না হওয়া পর্যন্ত ডেটা পয়েন্টার অবশ্যই বৈধ থাকবে।

SPI মাস্টার লেনদেন শুরু করার আগে একাধিকবার কল করা যেতে পারে। এই ফাংশনে প্রতিটি সফল কল পূর্ববর্তী কলগুলির পূর্ববর্তী মানগুলিকে বাতিল করে দেবে৷

একটি সম্পূর্ণ লেনদেনের পরে এই ফাংশনটিকে কল না করা একই রকম যদি এই ফাংশনটিকে আগে কল করা হয়েছিল উভয় বাফার দৈর্ঘ্য শূন্য এবং aRequestTransactionFlag সেট করে false

একবার aOutputBuf এর aOutputBufLen বাইট ক্লক আউট হয়ে গেলে, মাস্টার SPI লেনদেন শেষ না করা পর্যন্ত MISO পিনটি উচ্চ সেট করা হবে। এটি লেনদেনের দৈর্ঘ্যের সাথে 0xFF বাইট সহ aOutputBuf এর শেষ প্যাডিংয়ের কার্যকরী সমতুল্য।

একবার aInputBuf-এর aInputBufLen বাইটগুলি MOSI থেকে ক্লক করা হয়ে গেলে, SPI মাস্টার লেনদেন শেষ না করা পর্যন্ত MOSI পিনের সমস্ত পরবর্তী মানগুলি উপেক্ষা করা হয়৷

মনে রাখবেন যে SPI মাস্টার একটি লেনদেন শেষ করার আগে যদি aInputBufLen বা aOutputBufLen (বা উভয়ই) নিঃশেষ হয়ে যায়, তবুও লেনদেনের চলমান আকারের ট্র্যাক রাখতে হবে লেনদেন সম্পূর্ণ কলব্যাকে পাস করার জন্য। উদাহরণস্বরূপ, যদি aInputBufLen 10 এর সমান এবং aOutputBufLen 20 এর সমান হয় এবং SPI মাস্টার 30 বাইট ক্লক করে, তাহলে মান 30 লেনদেন সম্পূর্ণ কলব্যাকে পাস করা হয়।

যদি একটি NULL পয়েন্টার aOutputBuf বা aInputBuf হিসাবে পাস করা হয় তবে এর মানে হল যে বাফার পয়েন্টারটি তার আগের/বর্তমান মান থেকে পরিবর্তন করা উচিত নয়। এই ক্ষেত্রে, সংশ্লিষ্ট দৈর্ঘ্যের যুক্তি উপেক্ষা করা উচিত। উদাহরণস্বরূপ, otPlatSpiSlavePrepareTransaction(NULL, 0, aInputBuf, aInputLen, false) ইনপুট বাফার পয়েন্টার এবং এর দৈর্ঘ্য পরিবর্তন করে কিন্তু আউটপুট বাফার পয়েন্টারটিকে আগের মতোই রাখে।

একটি লেনদেন চলমান অবস্থায় এই ফাংশনে যেকোনও কল করলে সমস্ত আর্গুমেন্ট উপেক্ষা করা হবে এবং ফেরতের মান OT_ERROR_BUSY হবে।

বিস্তারিত
পরামিতি
[in] aOutputBuf
MISO পিনে লিখতে হবে ডেটা
[in] aOutputBufLen
আউটপুট বাফারের আকার, বাইটে
[in] aInputBuf
MOSI পিন থেকে ডেটা পড়তে হবে
[in] aInputBufLen
ইনপুট বাফারের আকার, বাইটে
[in] aRequestTransactionFlag
হোস্ট ইন্টারাপ্ট সেট করা হলে সত্যে সেট করুন
রিটার্ন মান
OT_ERROR_NONE
লেনদেন সফলভাবে প্রস্তুত করা হয়েছে.
OT_ERROR_BUSY
একটি লেনদেন বর্তমানে চলছে।
OT_ERROR_INVALID_STATE
otPlatSpiSlaveEnable() কল করা হয়নি।

সম্পদ

OpenThread API রেফারেন্স বিষয়গুলি উৎস কোড থেকে উদ্ভূত হয়, যা GitHub- এ উপলব্ধ। আরও তথ্যের জন্য, বা আমাদের ডকুমেন্টেশনে অবদান রাখতে, সম্পদ দেখুন।