GAP API for btshell¶
Generic Access Profile (GAP) defines the generic procedures related to discovery of Bluetooth devices (idle mode procedures) and link management aspects of connecting to Bluetooth devices (connecting mode procedures). It also defines procedures related to use of different security levels.
Several different modes and procedures may be performed simultaneously over an LE physical transport. The following modes and procedures are defined for use over an LE physical transport:
- Broadcast mode and observation procedure
- These allow two devices to communicate in a unidirectional connectionless manner using the advertising events.
- Discovery modes and procedures
- All devices shall be in either non-discoverable mode or one of the discoverable modes.
- A device in the discoverable mode shall be in either the general discoverable mode or the limited discoverable mode.
- A device in non-discoverable mode will not be discovered by any device that is performing either the general discovery procedure or the limited discovery procedure.
- Connection modes and procedures
- allow a device to establish a connection to another device.
- allow updating of parameters of the connection
- allow termination of the connection
- Bonding modes and procedures
- Bonding allows two connected devices to exchange and store security and identity information to create a trusted relationship.
- Bonding can occur only between two devices in bondable mode.
Available commands¶
Parameters default values are marked red.
Configuration¶
| Command | Parmeters | ** Possible values** | Description |
|---|---|---|---|
| set | Set configuration options | ||
| addr | XX:XX:XX:XX:XX:XX | Local device address | |
| addr_type | public |
Local device address type | |
| random | Use random address for scan requests | ||
| mtu | [23-UINT16_MAX] | GATT Maximum Transmission Unit (MTU) | |
| irk | XX:XX:XX… | Local Identity Resolving Key (16 byte | |
| set-priv-mode | Set privacy mode for device | ||
| addr | XX:XX:XX:XX:XX:XX | Remote device address | |
| addr_type | public |
Remote device public address type | |
| random | Remote device random address type | ||
| mode | [0 -1] |
0 - use network privacy, 1 - use device privacy | |
| white-list | Add devices to white list (this command accepts multiple instances of addr and addr_type parameters) | ||
| addr | XX:XX:XX:XX:XX:XX | Remote device address | |
| addr_type | public |
Remote device public address type | |
| random | Remote device random address type |
Device discovery and connection¶
| Command | Parmeters | ** Possible values** | Description |
|---|---|---|---|
| scan | Discover remote devices | ||
| cancel | cancel ongoing scan procedure | ||
| extended | none |
Start legacy scan | |
| 1M | Start extended scan on 1M PHY | ||
| coded | Start extended scan on Coded PHY | ||
| both | Start extended scan on both PHYs | ||
| duration | [1-INT32_MAX ], |
Duration of scan in milliseconds | |
| limited | [0 -1] |
Use limited discovery procedure | |
| passive | [0 -1] |
Use passive scan | |
| interval | [0 -UINT16_MAX] |
Scan interval, if 0 use stack’s default | |
| window | [0 -UINT16_MAX] |
Scan window, if 0 use stack’s default | |
| filter | no_wl |
Scan filter policy - Accept all advertising packets | |
| use_wl | Accept only advertising packets from devices on White List | ||
| no_wl_inita | Accept all advertising packets (including directed RPA) | ||
| use_wl_inita | Accept only advertising packets from devices on White List (including directed RPA) | ||
| nodups | [0 -1] |
Disable duplicates filtering | |
| own_addr_type | public |
Use public address for scan requests | |
| random | Use random address for scan requests | ||
| rpa_pub | Use RPA address for scan requests (fallback to public if no IRK) | ||
| rpa_rnd | Use RPA address for scan requests (fallback to random if no IRK) | ||
| extended_duration | [0 -UINT16_MAX] |
Duration of extended scan in 10 milliseconds | |
| extended_period | [0 -UINT16_MAX] |
Periodic scan interval in 1.28 seconds (0 disabled) | |
| longrange_interval | [0 -UINT16_MAX] |
Scan interval for Coded Scan , if 0 use stack’s default | |
| longrange_window | [0 -UINT16_MAX] |
Scan window for Coded Scan , if 0 use stack’s default | |
| longrange_passive | [0 -1] |
Use passive scan for Coded Scan | |
| connect | Initiate connection to remote device | ||
| cancel | Cancel ongoing connection procedure | ||
| extended | none |
Use legacy connection procedure | |
| 1M | Extended connect using 1M PHY scan parameters | ||
| coded | Extended connect using Coded PHY scan parameters | ||
| both | Extended connect using 1M and Coded PHYs scan parameters | ||
| all | Extended connect using 1M and Coded PHYs scan parameters (Provide also connection parameters for 2M PHY) | ||
| peer_addr_type | public |
Remote device public address type | |
| random | Remote device random address type | ||
| public_id | Remote device public address type (Identity) | ||
| random_id | Remote device random address type (Identity) | ||
| peer_addr | XX:XX:XX:XX:XX:XX | Remote device address | |
| own_addr_type | public |
Use public address for scan requests | |
| random | Use random address for scan requests | ||
| rpa_pub | Use RPA address for scan requests (fallback to public if no IRK) | ||
| rpa_rnd | Use RPA address for scan requests (fallback to random if no IRK) | ||
| duration | [0 -INT32_MAX] |
Connection attempt duration, if 0 use stack’s default | |
| scan_interval | [0-UINT16_MAX] | Scan interval, default: 0x0010 | |
| scan_window | [0-UINT16_MAX] | Scan window, default: 0x0010 | |
| interval_min | [0-UINT16_MAX] | Minimum connection interval, default: 30 | |
| interval_max | [0-UINT16_MAX] | Maximum connection interval, default: 50 | |
| latency | [UINT16] | Connection latency, default: 0 | |
| timeout | [UINT16] | Connection timeout, default: 0x0100 | |
| min_conn_event_len | [UINT16] | Minimum length of connection event, default: 0x0010 | |
| max_conn_event_len | [UINT16] | Maximum length of connection event, default: 0x0300 | |
| coded_scan_interval | [0-UINT16_MAX] | Coded PHY Scan interval, default: 0x0010 | |
| coded_scan_window | [0-UINT16_MAX] | Coded PHY Scan window, default: 0x0010 | |
| coded_interval_min | [0-UINT16_MAX] | Coded PHY Minimum connection interval, default: 30 | |
| coded_interval_max | [0-UINT16_MAX] | Coded PHY Maximum connection interval, default: 50 | |
| coded_latency | [UINT16] | Coded PHY Connection latency, default: 0 | |
| coded_timeout | [UINT16] | Coded PHY Connection timeout, default: 0x0100 | |
| coded_min_conn_event_len | [UINT16] | Coded PHY Minimum length of connection event, default: 0x0010 | |
| coded_max_conn_event_len | [UINT16] | Coded PHY Maximum length of connection event, default: 0x0300 | |
| 2M_scan_interval | [0-UINT16_MAX] | 2M PHY Scan interval, default: 0x0010 | |
| 2M_scan_window | [0-UINT16_MAX] | 2M PHY Scan window, default: 0x0010 | |
| 2M_interval_min | [0-UINT16_MAX] | 2M PHY Minimum connection interval, default: 30 | |
| 2M_interval_max | [0-UINT16_MAX] | 2M PHY Maximum connection interval, default: 50 | |
| 2M_latency | [UINT16] | 2M PHY Connection latency, default: 0 | |
| 2M_timeout | [UINT16] | 2M PHY Connection timeout, default: 0x0100 | |
| 2M_min_conn_event_len | [UINT16] | 2M PHY Minimum length of connection event, default: 0x0010 | |
| 2M_max_conn_event_len | [UINT16] | 2M PHY Maximum length of connection event, default: 0x0300 | |
| disconnect | Disconnect exisiting connection | ||
| conn | [UINT16] | Connection handle | |
| reason | [UINT8] | Disconnect reason | |
| show-addr | Show local public and random identity addresses | ||
| show-conn | Show current connections | ||
| conn-rssi | Obtain RSSI of specified connection | ||
| conn | [UINT16] | Connection handle | |
| conn-update-params | Update parameters of specified connection | ||
| conn | [UINT16] | Connection handle | |
| interval_min | [0-UINT16_MAX] | Minimum connection interval, default: 30 | |
| interval_max | [0-UINT16_MAX] | Maximum connection interval, default: 50 | |
| latency | [UINT16] | Connection latency, default: 0 | |
| timeout | [UINT16] | Connection timeout, default: 0x0100 | |
| min_conn_event_len | [UINT16] | Minimum length of connection event, default: 0x0010 | |
| max_conn_event_len | [UINT16] | Maximum length of connection event, default: 0x0300 | |
| conn-datalen | Set DLE parmaeters for connection | ||
| conn | [UINT16] | Connection handle | |
| octets | [UINT16] | Maximum transmission packet size | |
| time | [UINT16] | Maximum transmission packet time | |
| phy-set | Set prefered PHYs used for connection | ||
| conn | [UINT16] | Connection handle | |
| tx_phys_mask | [UINT8] | Prefered PHYs on TX is mask of following bits0x00 - no preference0x01 - 1M, 0x02 - 2M, 0x04 - Coded | |
| rx_phys_mask | [UINT8] | Prefered PHYs on RX is mask of following bits0x00 - no preference0x01 - 1M, 0x02 - 2M, 0x04 - Coded | |
| phy_opts | [UINT16] | Options for Coded PHY 0 - any coding, 1 - prefer S2, 2 - prefer S8 | |
| phy-set-default | Set default prefered PHYs used for new connection | ||
| tx_phys_mask | [UINT8] | Prefered PHYs on TX is mask of following bits0x00 - no preference0x01 - 1M, 0x02 - 2M, 0x04 - Coded | |
| rx_phys_mask | [UINT8] | Prefered PHYs on RX is mask of following bits0x00 - no preference0x01 - 1M, 0x02 - 2M, 0x04 - Coded | |
| phy-read | Read connection current PHY | ||
| conn | [UINT16] | Connection handle | |
| l2cap-update | Update connection parameters | ||
| interval_min | [0-UINT16_MAX] | Minimum connection interval, default: 30 | |
| interval_max | [0-UINT16_MAX] | Maximum connection interval, default: 50 | |
| latency | [UINT16] | Connection latency, default: 0 | |
| timeout | [UINT16] | Connection timeout, default: 0x0100 |
Security¶
| Command | Parmeters | ** Possible values** | Description |
|---|---|---|---|
| security-set-data | Set security configuration | ||
| oob-flag | [0 -1] |
Set Out-Of-Band (OOB) flag in Security Manager | |
| mitm-flag | [0 -1] |
Set Man-In-The-Middle (MITM) flag in Security Manager | |
| io_capabilities | 0 | Set Input-Output Capabilities to “DisplayOnly” | |
| 1 | Set Input-Output Capabilities to “DisplayYesNo” | ||
| 2 | Set Input-Output Capabilities to “KeyboardOnly” | ||
| 3 | Set Input-Output Capabilities to “NoInputNoOutput” | ||
| 4 | Set Input-Output Capabilities to “KeyboardDisplay” | ||
| our_key_dist | [UINT8] | Set Local Keys Distribution, this is a bit field of possible values: LTK (0x01), IRK (0x02), CSRK (0x04), LTK_SC(0x08) | |
| their_key_dist | [UINT8] | Set Remote Keys Distribution, this is a bit field of possible values: LTK (0x01), IRK (0x02), CSRK (0x04), LTK_SC(0x08) | |
| bonding-flag | [0 -1] |
Set Bonding flag in Security Manager | |
| sc-flag | [0 -1] |
Set Secure Connections flag in Security Manager | |
| security-pair | Start pairing procedure | ||
| conn | [UINT16] | Connection handle | |
| security-encryption | Start encryption procedure | ||
| conn | [UINT16] | Connection handle | |
| ediv | [UINT16] | EDIV for LTK to use (use storage if not provided) | |
| rand | [UINT64] | Rand for LTK | |
| ltk | XX:XX:XX… | LTK (16 bytes) | |
| security-start | Start security procedure (This starts either pairing or encryption depending if keys are stored) | ||
| conn | [UINT16] | Connection handle | |
| auth-passkey | Reply to Passkey request | ||
| conn | [UINT16] | Connection handle | |
| action | [UINT16] | Action to reply (as received in event) | |
| key | [0-999999] | Passkey to reply (Input or Display action) | |
| oob | XX:XX:XX:… | Out-Of-Band secret (16 bytes) (OOB action) | |
| yesno | Yy-Ny | Confirm passkey (for Passkey Confirm action) |
Advertising with Extended Advertising enabled¶
| Command | Parmeters | ** Possible values** | Description |
|---|---|---|---|
| advertise-configure | Configure new advertising instance | ||
| instance | [0 -UINT8_MAX] |
Advertising instance | |
| connectable | [0 -1] |
Use connectable advertising | |
| scannable | [0 -1] |
Use scannable advertising | |
| peer_addr_type | public |
Remote device public address type | |
| random | Remote device random address type | ||
| public_id | Remote device public address type (Identity) | ||
| random_id | Remote device random address type (Identity) | ||
| peer_addr | XX:XX:XX:XX:XX:XX | Remote device address - if provided perform directed advertising | |
| own_addr_type | public |
Use public address for scan requests | |
| random | Use random address for scan requests | ||
| rpa_pub | Use RPA address for scan requests (fallback to public if no IRK) | ||
| rpa_rnd | Use RPA address for scan requests (fallback to random if no IRK) | ||
| channel_map | [0 -UINT8_MAX} |
Primary advertising channels map. If 0 use all channels. | |
| filter | none |
Advertising filter policy - no filtering, no whitelist used | |
| scan | process all connection requests but only scans from white list | ||
| conn | process all scan request but only connection requests from white list | ||
| both | ignore all scan and connection requests unless in white list | ||
| interval_min | [0 -UINT32_MAX] |
Minimum advertising interval in 0.625 miliseconds If 0 use stack default. | |
| interval_max | [0 -UINT32_MAX] |
Maximum advertising interval in 0.625 miliseconds If 0 use stack default. | |
| rx_power | [-127 - 127 ] |
Advertising TX power in dBm | |
| primary_phy | 1M |
Use 1M PHY on primary advertising channels | |
coded |
Use Coded PHY on primary advertising channels | ||
| secondary_phy | 1M |
Use 1M PHY on secondary advertising channels | |
coded |
Use coded PHY on primary advertising channels | ||
2M |
Use 2M PHY on primary advertising channels | ||
| sid | [0 -16] |
Adsertising instance SID | |
| high_duty | [0 -1] |
Use high_duty advertising | |
| anonymous | [0 -1] |
Use anonymous advertising | |
| legacy | [0 -1] |
Use legacy PDUs for advertising | |
| include_tx_power | [0 -1] |
Include TX power information in advertising PDUs | |
| scan_req_notif | [0 -1] |
Enable SCAN_REQ notifications | |
| advertise-set-addr | Configure random adress for instance | ||
| instance | [0 -UINT8_MAX] |
Advertising instance | |
| addr | XX:XX:XX:XX:XX:XX | Random address | |
| advertise-set-adv-data | Configure advertising instance ADV_DATA. This allow to configure following TLVs: | ||
| advertise-set-scan-rsp | Configure advertising instance SCAN_RSP. This allow to configure following TLVs: | ||
| instance | [0 -UINT8_MAX] |
Advertising instance | |
| flags | [0 -UINT8_MAX] |
Flags value | |
| uuid16 | [UINT16] | 16-bit UUID value (can be passed multiple times) | |
| uuid16_is_complete | [0 -1] |
I 16-bit UUID list is complete | |
| uuid32 | [UINT32] | 32-bit UUID value (can be passed multiple times) | |
| uuid32_is_complete | [0 -1] |
I 32-bit UUID list is complete | |
| uuid128 | XX:XX:XX:… | 128-bit UUID value (16 bytes) (can be passed multiple times) | |
| uuid128_is_complete | [0 -1] |
I 128-bit UUID list is complete | |
| tx_power_level | [-127 - 127] | TX Power level to include | |
| appearance | [UINT16] | Appearance | |
| name | string | Name | |
| advertising_interval | [UINT16] | Advertising interval | |
| service_data_uuid32 | XX:XX:XX:… | 32-bit UUID service data | |
| service_data_uuid128 | XX:XX:XX:… | 128-bit UUID service data | |
| uri | XX:XX:XX:… | URI | |
| msg_data | XX:XX:XX:… | Manufacturer data | |
| eddystone_url | string | Eddystone with specified URL | |
| advertise-start | Start advertising with configured instance | ||
| instance | [0 -UINT8_MAX] |
Advertising instance | |
| duration | [0 -UINT16_MAX] |
Advertising duration in 10ms units. 0 - forver | |
| max_events | [0 -UINT8_MAX] |
Maximum number of advertising events. 0 - no limit | |
| advertise-stop | Stop advertising | ||
| instance | [0 -UINT8_MAX] |
Advertising instance | |
| advertise-remove | Remove configured advertising instance | ||
| instance | [0 -UINT8_MAX] |
Advertising instance |
Legacy Advertising with Extended Advertising disabled¶
| Command | Parmeters | ** Possible values** | Description |
|---|---|---|---|
| advertise | Enable advertising | ||
| stop | Stop enabled advertising | ||
| conn | und |
Connectable mode: undirected | |
| non | non-connectable | ||
| dir | directed | ||
| discov | gen |
Discoverable mode: general discoverable | |
| ltd | limited discoverable | ||
| non | non-discoverable | ||
| scannable | [0 -1] |
Use scannable advertising | |
| peer_addr_type | public |
Remote device public address type | |
| random | Remote device random address type | ||
| public_id | Remote device public address type (Identity) | ||
| random_id | Remote device random address type (Identity) | ||
| peer_addr | XX:XX:XX:XX:XX:XX | Remote device address - if provided perform directed advertising | |
| own_addr_type | public |
Use public address for scan requests | |
| random | Use random address for scan requests | ||
| rpa_pub | Use RPA address for scan requests (fallback to public if no IRK) | ||
| rpa_rnd | Use RPA address for scan requests (fallback to random if no IRK) | ||
| channel_map | [0 -UINT8_MAX} |
Primary advertising channels map. If 0 use all channels. | |
| filter | none |
Advertising filter policy - no filtering, no whitelist used | |
| scan | process all connection requests but only scans from white list | ||
| conn | process all scan request but only connection requests from white list | ||
| both | ignore all scan and connection requests unless in white list | ||
| interval_min | [0 -UINT32_MAX] |
Minimum advertising interval in 0.625 miliseconds If 0 use stack default. | |
| interval_max | [0 -UINT32_MAX] |
Maximum advertising interval in 0.625 miliseconds If 0 use stack default. | |
| high_duty | [0 -1] |
Use high_duty advertising | |
| duration | [1 -INT32_MAX] |
Advertising duration in ms | |
| set-adv-data | Configure advertising instance ADV_DATA. This allow to configure following TLVs: | ||
| set-scan-rsp | Configure advertising instance SCAN_RSP. This allow to configure following TLVs: | ||
| flags | [0 -UINT8_MAX] |
Flags value | |
| uuid16 | [UINT16] | 16-bit UUID value (can be passed multiple times) | |
| uuid16_is_complete | [0 -1] |
I 16-bit UUID list is complete | |
| uuid32 | [UINT32] | 32-bit UUID value (can be passed multiple times) | |
| uuid32_is_complete | [0 -1] |
I 32-bit UUID list is complete | |
| uuid128 | XX:XX:XX:… | 128-bit UUID value (16 bytes) (can be passed multiple times) | |
| uuid128_is_complete | [0 -1] |
I 128-bit UUID list is complete | |
| tx_power_level | [-127 - 127] | TX Power level to include | |
| appearance | [UINT16] | Appearance | |
| name | string | Name | |
| advertising_interval | [UINT16] | Advertising interval | |
| service_data_uuid32 | XX:XX:XX:… | 32-bit UUID service data | |
| service_data_uuid128 | XX:XX:XX:… | 128-bit UUID service data | |
| uri | XX:XX:XX:… | URI | |
| msg_data | XX:XX:XX:… | Manufacturer data | |
| eddystone_url | string | Eddystone with specified URL |
L2CAP Connection Oriented Channels¶
| Command | Parmeters | ** Possible values** | Description |
|---|---|---|---|
| l2cap-create-server | Create L2CAP server | ||
| psm | [UINT16] | PSM | |
| l2cap-connect | Connect to remote L2CAP server | ||
| conn | [UINT16] | Connection handle | |
| psm | [UINT16] | PSM | |
| l2cap-disconnect | Disconnec from L2CAP server | ||
| conn | [UINT16] | Connection handle | |
| idx | [UINT16] | L2CAP connection oriented channel identifier | |
| l2cap-send | Send data over connected L2CAP channel | ||
| conn | [UINT16] | Connection handle | |
| idx | [UINT16] | L2CAP connection oriented channel identifier | |
| bytes | [UINT16] | Number of bytes to send (hardcoded data pattern) | |
| l2cap-show-coc | Show connected L2CAP channels |
Keys storage¶
| Command | Parmeters | ** Possible values** | Description |
|---|---|---|---|
| keystore-add | Add keys to storage | ||
| type | msec | Master Key | |
| ssec | Slave Key | ||
| cccd | Client Characteristic Configuration Descriptor | ||
| addr | XX:XX:XX:XX:XX:XX | Device address | |
| addr_type | public |
Device address type | |
| random | Use random address for scan requests | ||
| ediv | [UINT16] | EDIV for LTK to add | |
| rand | [UINT64] | Rand for LTK | |
| ltk | XX:XX:XX… | LTK (16 bytes) | |
| irk | XX:XX:XX… | Identity Resolving Key (16 bytes) | |
| csrk | XX:XX:XX… | Connection Signature Resolving Key (16 bytes) | |
| keystore-del | Delete keys from storage | ||
| type | msec | Master Key | |
| ssec | Slave Key | ||
| cccd | Client Characteristic Configuration Descriptor | ||
| addr | XX:XX:XX:XX:XX:XX | Device address | |
| addr_type | public |
Device address type | |
| random | Use random address for scan requests | ||
| ediv | [UINT16] | EDIV for LTK to remove | |
| rand | [UINT64] | Rand for LTK | |
| keystore-show | Show stored keys | ||
| type | msec | Master Keys | |
| ssec | Slave Keys | ||
| cccd | Client Characteristic Configuration Descriptor s |


Web Design Terminology
IA? UX? UI?
Like all fields, web design has its own acronyms and terminology that evolves and changes over time. This is a brief primer of some of the more commonly used (and confused) terms.
Information Architecture (IA)
Site organization and mapping
Information architecture (IA) is the structural design of shared information environments; the art and science of organizing and labelling websites, intranets, online communities and software to support usability and findability; and an emerging community of practice focused on bringing principles of design and architecture to the digital landscape. Typically, it involves a model or concept of information that is used and applied to activities which require explicit details of complex information systems.
- Wikipedia
IA Related resources:
- Usability.gov's Information Architecture Basics
- IA Institute's What is Information Architecture
- UX Planet's Information Architecture. Basics for Designers.
User Experience Design (UX)
Improving site usability and accessibility
User experience design (UX, UXD, UED or XD) is the process of enhancing user satisfaction with a product by improving the usability, accessibility, and pleasure provided in the interaction with the product. User experience design encompasses traditional human–computer interaction (HCI) design, and extends it by addressing all aspects of a product or service as perceived by users.
- Wikipedia
UX Related resources:
User Interface Design (UI)
Visual Design via Mockups
User interface design (UI) or user interface engineering is the design of user interfaces for machines and software, such as computers, home appliances, mobile devices, and other electronic devices, with the focus on maximizing usability and the user experience. The goal of user interface design is to make the user's interaction as simple and efficient as possible, in terms of accomplishing user goals (user-centered design).
- Wikipedia
UI Related resources:
- Usability.gov's User Interface Design Basics
- IDF's User Interface (UI) Design Topic Resources
- Donald Norman's Emotion & Design: Attractive things work better
Conclusion
Essential to becoming an expert in one's field is knowing and understanding important topic areas that are often times referred to using acronyms. In web design, this includes IA, UX, and UI.
Related Resources and Reading
- Knowledge Bases:
- People:
Go Further
- Familiarize yourself with User Centered Design
Author Notes
This was written specifically to help aspiring web designers as they aim to:
- Learn the basic acronyms and terminologies commonly used in the context of web design and front-end web development


TRAKTOR has kept dancefloors moving for almost 20 years. Our DJ controllers are designed to help you create powerful DJ mixes with TRAKTOR PRO 3 software. From DJ controllers designed for the club, to portable DJ controllers you can fit in a backpack, there's a way for everybody to share the music and mixes they love.
4-Channel DJ controller with motorized Haptic Drive jog wheels. Full feedback and flexibility, pro audio interface, and more.
4-Channel DJ controller without motorized Haptic Drive jog wheels. Full feedback and flexibility, pro audio interface, and more.
2-Channel DJ controller without motorized Haptic Drive jog wheels. Full feedback and flexibility, pro audio interface, and much more for gigs.
Flagship all-in-one 4-channel DJ controller with full connectivity, hi-res displays, and maximum control options.
Flagship all-in-one 4-channel DJ controller with full connectivity, hi-res displays, and maximum control options.
Flagship of 4-channel DJ controller with full connectivity, hi-performance jog wheels, and maximum control options.
Flagship of 2-channel DJ controller with full connectivity, small jog wheels, and ability of controlling remix decks via one button.
The next-generation deck is here. The modular counterpart to the KONTROL S8. It provides advanced touch-and-see controls.
 It makes a amazing combination with the F1 and the D2
Ancestor of the Z2 model, compatible with Traktor pro 2. Makes good combination with D2 and F1 for creative DJs.
DJ controller for creative live remixing with TRAKTOR's integrated Stem Decks and clip-based Remix Decks.


The moviepage Here is a collection of short Tamagotchi movies. Click on the names to view. Get out the popcorn and enjoy!
The Kiss Happy
Families Tamagotchi
- The Movie Tamagotchi
II - Gone by the Wind Tamagotchi
III - Making of Twins
Return to the CyberZoo Homepage
Tamagotchi is a registered trademark of Bandai. |
page last updated 13 October 1997


Please use epic ticket for comments, feedbacks, etc.
This is a draft document for Jenkins 2.0. Many of this is real (yet).
A more powerful plugin manager. A revamped UI for configuring jobs, views, slaves, etc. An easier to use "New Item/View/Slave" dialog.
Overview
Over the past year and a half or so, Tom and I have been cobbling together fragments of Javascript, Java and Jelly code trying to push the Jenkins web ui in the right direction, but routinely bumping into the walls of inflexible page DOM, incompatible legacy JS libraries, plugin compatibility concerns and life draining skepticism from the community. With the release of a new version of Jenkins, Tom and now Keith and I are eager to cast off some of this baggage so we can start bringing the Jenkins web user experience.
Subject areas
The Jenkins GUI has a potentially broad reach and many areas for possible and substantial improvement. To help clarify the effort, the following 15 subprojects are a helpful means of dividing possible areas of work:
https://www.youtube.com/embed/yra_HzRzt1k (6min and again 11min as Tom demos themes which are an upside enabled by semantic pages and required for config pages demoed at 24min)
- Initial plugin selection and installation
https://youtu.be/kzRR8XR8hu4 - Flexible LESS driven theming (Tom’s forgotten effort)
This is not as well articulated but touched on in this JUC talk:
https://www.youtube.com/embed/yra_HzRzt1k (11 min in) - New item categorization and dynamic choice offering
https://www.youtube.com/watch?v=A_lu-P0OhNQ - Configuration page overhaul
https://www.youtube.com/watch?v=A_lu-P0OhNQ - Plugin Manager and Update Center overhaul
https://www.youtube.com/watch?v=9vPUMe3lzfo
https://www.youtube.com/watch?v=kcxKvyX4Oq8
https://www.youtube.com/watch?v=jf5s0sqIYBY - Fully responsive app page template wrapper
- Workflow results monitoring
- Improved console out (easier access and better readability)
- Multi and inline action grid control (with sorting and grouping)
- Global context build queue tracking
- Improved post-run build analytics (video)
- Terminology cleanup
References
- Unknown User (gusreiber)'s blog post
- Jenkins blog post with references to previous discussions and presentations
Related Issues
- JENKINS-14538 Separate "configure tools" page
- Unknown User (gusreiber) So far, I have not looked more deeply into the notion of splitting the control of plugin added configuration from stock job configuration (as suggested here, if I am understanding correctly). Even outside of #14538, the idea of somehow segmenting plugin added controls from stock controls has come up in JUC and makes a lot of sense. What I am suggesting for configuration is collapsible regions. As shown here:
- https://www.youtube.com/watch?v=qKLi_ViPXy8
- https://www.youtube.com/watch?v=A_lu-P0OhNQ
- JENKINS-17011 More convenient job selection control
- Unknown User (gusreiber) As part of a CloudBees feature development, we have constructed a new file browsing control that does a sort of type-complete of your folder structure, allowing you to type or pick your path smoothly. This control should be generalized and open-source.
- JENKINS-17373 Unconditionally display tool installation selector
- Unknown User (gusreiber) This seems Maven job specific, or am I misunderstanding?
- JENKINS-18435 Navigating back, then forward, from a job configuration causes loss of config data
- JENKINS-19828 Kill or rework auto refresh
- Unknown User (gusreiber) yes, this is awful. I would like to see real time sensitive data separated a bit from configuration. Then real time data could be handled in a more modern way and most importantly not bog down the sort of regular page navigation that is required for configuration (which is also less than ideal).
- JENKINS-19584 Ability to redirect user to configuration screen when erroneous data is saved
- Unknown User (gusreiber) This issues seems specific to a particular error case that is not adequately handled. The behavior described by the issue reported is the behavior we want in all possible cases.
- Unknown User (gusreiber) This issues seems specific to a particular error case that is not adequately handled. The behavior described by the issue reported is the behavior we want in all possible cases.
- JENKINS-21092 Adaptable UI for Mobile Devices
- Unknown User (gusreiber) I believe this needs to happen. For it to happen, many pages will need to have moderate DOM structure changes that will require a refactoring of hudson-behavior.js and will introduce some plugin instability.
- JENKINS-20190 Ability to sort or group /lib/hudson/newFromList:form
- JENKINS-21486 Fail a plugin if its dependencies doesn't exist
- JENKINS-22926 Extension point for augmenting Plugin Manager display
- Unknown User (gusreiber) I think plugin handling needs to be completely overhauled:
- https://www.youtube.com/watch?v=9vPUMe3lzfo
- https://www.youtube.com/watch?v=kcxKvyX4Oq8
- https://www.youtube.com/watch?v=jf5s0sqIYBY


Back to main
This demo only moves a circle across the canvas element (created at runtime inside the div container) using user input via the keyboard.
Start the demo hitting the Start button. Then move the red ball around using the keyboard arrow keys.


| Elements' Summary |
| Message |
gives a detailed description of the reason, why the exception was thrown.
|
| Context |
should contain a reference to the original, which raised the exception.
|
| Elements' Details |
Message
string Message;
- Description
- gives a detailed description of the reason, why the exception was thrown.
The description should be as detailed as possible.
|
|
Context
XInterface Context;
- Description
- should contain a reference to the original, which raised the exception.
May be NULL.
|
|
Top of Page
Copyright © 2013, The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the Apache feather logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.


Your Videos
Hey viewers! here in these videos we will discuss about the important questions asked in dpp. We will also post some of the exclusive videos which mostly contains the explanation towards the use of particular equation or the formula.
Special video lectures are here.
Computer...
Chapter 1: (FORCE)
Get your questions with the solutions of this chapter here.
Physics...
Chapter 1:
(WORK, ENERGY AND POWER)
Releasing soon !
Get your questions with the solutions of this chapter here.
Chemistry...
Chapter 1:
(WORK, ENERGY AND POWER)
Releasing soon !
Get your questions with the solutions of this chapter here.
Biology...
Chapter 1:
(WORK, ENERGY AND POWER)
Releasing soon !
Get your questions with the solutions of this chapter here.


The Officiant and People say or sing the Song of Simeon with this Antiphon, all standing
Guide us waking, O Lord, and guard us sleeping; that awake we may watch with Christ, and asleep we may rest in peace.{% if data.alleluia %} Alleluia, alleluia, alleluia.{% endif %}
Lord, now let your servant depart in peace,*
according to your word.

Glory be to the Father, and to the Son, and to the Holy Spirit;*
as it was in the beginning, is now, and ever shall be, world without end. Amen.
Guide us waking, O Lord, and guard us sleeping; that awake we may watch with Christ, and asleep we may rest in peace.{% if data.alleluia %} Alleluia, alleluia, alleluia.{% endif %}


--- layout: post title: Toulouse date: 2008-10-14 02:46:28.000000000 +05:30 categories: - Nexenta - Opensolaris tags: - belenix - Nexenta - Opensolaris - toulouse status: publish type: post published: true meta: _edit_last: '1' author: login: admin email<EMAIL_ADDRESS>display_name: admin first_name: '' last_name: '' ---
Had a wonderful short trip in Toulouse. It was a short trip and great to see the enthusiasm in the opensolaris community.
I'll probably do a longer post a little later, for now heres a link to the presentation I made for you to peruse.
Goodbye, Toulouse!


|
com.magnitudestudios.GameFace.ui.addFriends.AddFriendsFragment |
Add friends fragment
|
|
com.magnitudestudios.GameFace.ui.addFriends.AddFriendsViewModel |
Add friends view model
|
|
com.magnitudestudios.GameFace.views.holders.AddFriendViewHolder |
|
|
com.magnitudestudios.GameFace.ui.camera.addMembers.AddMembersDialog |
Add members dialog
|
|
com.magnitudestudios.GameFace.ui.camera.addMembers.AddMembersViewModel |
Add members view model
|
|
com.magnitudestudios.GameFace.bases.BaseActivity |
|
|
com.magnitudestudios.GameFace.bases.BaseFragment |
|
|
com.magnitudestudios.GameFace.bases.BasePermissionsActivity |
Base Permission class for all activities that require permissions;
Extend this class to ensure that the permissions defined in
|
|
com.magnitudestudios.GameFace.ui.BottomContainerFragment |
Bottom container fragment
|
|
com.magnitudestudios.GameFace.ui.camera.CameraFragment |
Camera fragment
|
|
com.magnitudestudios.GameFace.ui.camera.CameraViewModel |
Camera view model
|
|
com.magnitudestudios.GameFace.ui.shop.details.CardPackDetailsFragment |
Card pack details fragment
|
|
com.magnitudestudios.GameFace.views.holders.CardPackViewHolder |
|
|
com.magnitudestudios.GameFace.Constants |
|
|
com.magnitudestudios.GameFace.ui.takePhoto.CropPhotoFragment |
Crop photo fragment
|
|
com.magnitudestudios.GameFace.views.CustomInputLayout |
Custom input layout
|
|
com.magnitudestudios.GameFace.utils.CustomPeerConnectionObserver |
Custom peer connection observer
|
|
com.magnitudestudios.GameFace.utils.CustomSdpObserver |
Custom sdp observer
|
|
com.magnitudestudios.GameFace.views.CustomSurfaceView |
Custom surface view
|
|
com.google.firebase.database.DatabaseReference (extensions in package com.magnitudestudios.GameFace) |
|
|
com.magnitudestudios.GameFace.network.DownloadAllNecessary |
This worker will download all missing packs from the store
|
|
com.magnitudestudios.GameFace.pojo.Shop.DownloadPackResponse |
Response of a download request made to the API
|
|
com.magnitudestudios.GameFace.network.DownloadSinglePack |
Downloads a single game pack from the shop. Pass in the ShopItem data class as a JSON
string. This Worker will download the pack from the store.
|
|
com.magnitudestudios.GameFace.ui.profile.editProfile.EditProfileFragment |
Edit profile fragment
|
|
com.magnitudestudios.GameFace.ui.profile.editProfile.EditProfileViewModel |
Edit profile view model
|
|
com.magnitudestudios.GameFace.pojo.VideoCall.EmitMessage |
Emit message
|
|
com.magnitudestudios.GameFace.ui.login.fragments.FinishSignUpFragment |
Finish the sign up fragment
|
|
com.magnitudestudios.GameFace.repository.FirebaseHelper |
Firebase helper utility functions for performing basic Firebase Realtime functions
|
|
com.magnitudestudios.GameFace.pojo.UserInfo.Friend |
Friend
|
|
com.magnitudestudios.GameFace.ui.profile.tabs.FriendContainerFragment |
Friend container fragment
|
|
com.magnitudestudios.GameFace.pojo.UserInfo.FriendRequest |
Friend request
|
|
com.magnitudestudios.GameFace.ui.profile.tabs.FriendRequestsFragment |
Friend requests fragment
|
|
com.magnitudestudios.GameFace.views.holders.FriendRequestViewHolder |
|
|
com.magnitudestudios.GameFace.ui.profile.tabs.FriendsFragment |
Friends fragment
|
|
com.magnitudestudios.GameFace.ui.profile.tabs.FriendsViewModel |
Friends view model
|
|
com.magnitudestudios.GameFace.views.holders.FriendViewHolder |
|
|
com.magnitudestudios.GameFace.GameFace |
This is the Base Application class
|
|
com.magnitudestudios.GameFace.ui.home.HomeFragment |
Home fragment
|
|
com.magnitudestudios.GameFace.ui.home.HomeViewModel |
|
|
com.magnitudestudios.GameFace.network.HTTPRequest |
Http request utility object that has some convenient functions for use in various
places in the application.
|
|
com.magnitudestudios.GameFace.pojo.VideoCall.IceCandidatePOJO |
Ice candidate p o j o
|
|
com.magnitudestudios.GameFace.pojo.VideoCall.IceServer |
Ice server
|
|
com.magnitudestudios.GameFace.ui.calling.IncomingCall |
Incoming call
|
|
com.magnitudestudios.GameFace.views.holders.InstalledCardPackViewHolder |
|
|
com.magnitudestudios.GameFace.ui.shop.tabs.InstalledFragment |
|
|
com.magnitudestudios.GameFace.pojo.UserInfo.LocalPackInfo |
Local pack info
|
|
com.magnitudestudios.GameFace.ui.login.LoginActivity |
Login activity
|
|
com.magnitudestudios.GameFace.ui.login.fragments.LoginScreenFragment |
Login screen fragment
|
|
com.magnitudestudios.GameFace.ui.login.LoginViewModel |
Login view model
|
|
com.magnitudestudios.GameFace.ui.main.MainActivity |
Main activity
|
|
com.magnitudestudios.GameFace.ui.main.MainViewModel |
Main view model
|
|
com.magnitudestudios.GameFace.ui.shop.tabs.MarketFragment |
|
|
com.magnitudestudios.GameFace.pojo.VideoCall.Member |
Member
|
|
com.magnitudestudios.GameFace.callbacks.MemberCallback |
Callback for individual member events
|
|
com.magnitudestudios.GameFace.pojo.EnumClasses.MemberStatus |
Member status
|
|
com.magnitudestudios.GameFace.ui.camera.MemberStatusAdapter |
Member status adapter
|
|
com.magnitudestudios.GameFace.views.holders.MemberViewHolder |
|
|
com.magnitudestudios.GameFace.views.MorphableButton |
Morphable button
|
|
com.magnitudestudios.GameFace.views.MovableScreen |
Movable screen
|
|
androidx.lifecycle.MutableLiveData (extensions in package com.magnitudestudios.GameFace) |
|
|
com.magnitudestudios.GameFace.network.NotificationService |
Notification service. This is the class that handles all notifications, and
|
|
com.magnitudestudios.GameFace.pojo.UserInfo.Profile |
Profile
|
|
com.magnitudestudios.GameFace.ui.profile.ProfileFragment |
Profile fragment
|
|
com.magnitudestudios.GameFace.ui.profile.ProfileViewModel |
Profile view model
|
|
com.magnitudestudios.GameFace.views.RecyclerViewClickListener |
Recycler view click listener
|
|
com.magnitudestudios.GameFace.pojo.Shop.RemotePackInfo |
Remote pack info
|
|
com.bumptech.glide.RequestManager (extensions in package com.magnitudestudios.GameFace) |
|
|
com.magnitudestudios.GameFace.pojo.Helper.Resource |
Resource class for LiveData instances
Keeps track of the status of a resource
|
|
com.magnitudestudios.GameFace.callbacks.RoomCallback |
Callback for room events including WebRTC protocol events
|
|
com.magnitudestudios.GameFace.callbacks.RVButtonClick |
Callback for a generic listener for click events on RecyclerView items
|
|
com.magnitudestudios.GameFace.callbacks.RVRequestButton |
Callback for a the listener for click events on RecyclerView items
for the Friend Requests RecyclerView
|
|
com.magnitudestudios.GameFace.pojo.VideoCall.ServerInformation |
Server information
|
|
com.magnitudestudios.GameFace.pojo.VideoCall.SessionDetails |
Session details
|
|
com.magnitudestudios.GameFace.pojo.VideoCall.SessionInfoPOJO |
Session info POJO
|
|
com.magnitudestudios.GameFace.repository.SessionRepository |
Session repository
Singleton class to manage a connection to a room.
|
|
com.magnitudestudios.GameFace.ui.SettingsFragment |
Settings fragment
|
|
com.magnitudestudios.GameFace.callbacks.SharedItemClicked |
Called when a shared item in two fragments has been clicked
|
|
com.magnitudestudios.GameFace.ui.shop.ShopFragment |
Shop fragment
|
|
com.magnitudestudios.GameFace.pojo.Shop.ShopItem |
Shop item
|
|
com.magnitudestudios.GameFace.repository.ShopRepository |
Shop repository
Handles various Shop functions such as downloading packs,
Getting the items to display, getting the user's packs from the database
and syncing with local packs.
|
|
com.magnitudestudios.GameFace.ui.shop.ShopViewModel |
Shop view model
|
|
com.magnitudestudios.GameFace.pojo.Shop.ShowCaseItem |
Show case item
|
|
com.magnitudestudios.GameFace.views.ShowCaseItemViewHolder |
Show case item view holder
|
|
com.magnitudestudios.GameFace.ui.login.fragments.SignUpScreenFragment |
Sign up screen fragment
|
|
com.magnitudestudios.GameFace.common.SortedRVAdapter |
Abstract class for a Sorted RecyclerView Adapter
|
|
com.magnitudestudios.GameFace.SplashScreen |
|
|
com.magnitudestudios.GameFace.ui.login.fragments.StartScreenFragment |
Start screen fragment
|
|
com.magnitudestudios.GameFace.pojo.EnumClasses.Status |
Resource status for retrieval
Used for LiveData instances
|
|
com.magnitudestudios.GameFace.ui.takePhoto.TakePhotoFragment |
Take photo fragment
|
|
com.magnitudestudios.GameFace.pojo.UserInfo.User |
User
|
|
com.magnitudestudios.GameFace.repository.UserRepository |
User repository
Handles the logic of all user operations
|
|
com.magnitudestudios.GameFace.views.VideoLayout |
Video layout
|


Author |
Murali Raju<EMAIL_ADDRESS>|
Copyright |
Copyright © 2011 Murali Raju. |
License |
Apache License, Version 2.0 |
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
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 lib/swift_client.rb, line 20 def initialize(type, auth_json) auth_config = File.read(Dir.home + "/.swift-manager/authentication/#{auth_json}.json") @auth_params = JSON.parse(auth_config) case type when 's3' provider = @auth_params["provider"] aws_secret_access_key = @auth_params["keys"]["secret_access_key"] aws_access_key_id = @auth_params["keys"]["access_key_id"] begin puts 'Connecting to OpenStack Swift: S3 middleware...'.color(:green) puts '' @connection = Fog::Storage.new( :provider => provider, :aws_secret_access_key => aws_secret_access_key, :aws_access_key_id => aws_access_key_id ) rescue Exception => e raise 'Unable to connect to OpenStack Swift: S3 middleware. Check authentication information or if the service is running' end when 'swift' provider = @auth_params["provider"] swift_api_key = @auth_params["keys"]["secret_access_key"] swift_username = @auth_params["keys"]["access_key_id"] swift_auth_ip = @auth_params["url_ip"] begin Excon.defaults[:ssl_verify_peer] = false #SSL verify error on Mac OS X puts 'Connecting to OpenStack Swift...'.color(:green) puts '' @connection = Fog::Storage.new({ :provider => provider, :rackspace_username => swift_username, :rackspace_api_key => swift_api_key, :rackspace_auth_url => "#{swift_auth_ip}:8080/auth/v1.0"}) @cdn_connection = Fog::CDN.new({ :provider => provider, :rackspace_username => swift_username, :rackspace_api_key => swift_api_key, :rackspace_auth_url => "#{swift_auth_ip}:8080/auth/v1.0"}) rescue Exception => e raise 'Unable to connect to OpenStack Swift. Check authentication information or if the service is running.' end end end
# File lib/swift_client.rb, line 71 def create_container_no_cdn(prefix) @connection.directories.create( :key => "#{prefix}-#{Time.now.to_i}", # globally unique name :public => false, :cdn => "" ) sleep 1 list_containers puts '' end
# File lib/swift_client.rb, line 82 def create_containers_no_cdn(prefix, number_of) start_time = Time.now.to_f @count = 1 number_of.times do create_container_no_cdn(prefix) end_time = Time.now.to_f time_elapsed = end_time - start_time puts "Time elapsed to create #{@count} containers: #{time_elapsed} seconds".bright @count += 1 end end
# File lib/swift_client.rb, line 125 def create_objects(path_to_local_files, container) directory = @connection.directories.get(container) files = Dir[path_to_local_files] for file in files do name = File.basename(file) begin unless directory.files.head(name) directory.files.create(:key => name, :body => open(file)) puts "Uploading file #{name} to #{container}".bright else puts "File #{name} already exists. Please delete file and try again".bright end rescue Exception => e raise "Container #{container} does not exist. Please check and try again" end end puts '' puts 'Creating objects complete'.color(:green) puts '' end
# File lib/swift_client.rb, line 94 def delete_container(prefix) begin puts "Deleting container #{prefix}...".color(:green) @connection.directories.get(prefix).destroy puts '' rescue Exception => e #Fog related bugs...tbd #raise 'Delete files first or check if the container lists using \'swift-manager list storage -t swift -f <auth> -i container\'' end end
# File lib/swift_client.rb, line 105 def delete_containers containers_json = @connection.directories.to_json containers = JSON.parse(containers_json) container_names = [] containers.length.times do |i| container_names << containers[i]['key'] end start_time = Time.now.to_f container_names.each do |container| delete_files(container) delete_container(container) end_time = Time.now.to_f @time_elapsed = end_time - start_time end puts '' puts "Time elapsed to delete #{containers.length} containers: #{@time_elapsed} seconds".bright puts '' end
# File lib/swift_client.rb, line 151 def delete_objects(container) directory = @connection.directories.get(container) files = directory.files files.each do |f| f.destroy end puts '' puts "*Deleting all files in container #{container}".bright end
# File lib/swift_client.rb, line 162 def generate_json_output container_json_path = Dir.home + "/.swift-manager/shell/container.json" files_json_path = Dir.home + "/.swift-manager/shell/files.json" File.open(container_json_path, "w") do |f| f << @connection.directories.to_json end end
Generated with the Darkfish Rdoc Generator 2.


Rijndael Encryption Algorithm |
The Rijndael encryption algorithm has been designed to replace the aging DES algorithm. Like DES, it is a block cipher. It uses 128-bit, 192-bit or 256-bit keys. This implementation encrypts 128-bit blocks. (DES used 56-bit keys and 64-bit blocks.)
The code in this package is a modified version of an implementation placed in the public domain by the following persons:
The original code has been posted as rijndael.zip.
The modified code is easier to use than the original, and it compiles as either C or C++.
The modified code resides in the files rijndael.h and rijndael.c, which have been combined into the single file rijndael.txt. Download this file and then use a text editor to separate the two components. Then #include the file rijndael.h in any module that uses Rijndael encryption, and compile and link the file rijndael.c to the application.
To perform Rijndael encryption or decryption, first set up a buffer for encryption or decryption:
nrounds = rijndaelSetupEncrypt(rk, key, keybits); for encryption nrounds = rijndaelSetupDecrypt(rk, key, keybits); for decryption unsigned long *rk; pointer to encryption/decryption buffer, required space: keybits 32-bit words required 128 44 192 52 256 60 const unsigned char *key; key, where length in bytes is: keybits number of bytes 128 16 192 24 256 32 int keybits; number of bits in key, must be 128, 192 or 256 int nrounds; number of rounds: keybits nrounds 128 10 192 12 256 14
The package provides three macros to convert the keybits value to closely related values:
KEYLENGTH(keybits) number of bytes in key[] array RKLENGTH(keybits) number of 32-bit words in rk[] array NROUNDS(keybits) number of rounds
Encryption and decryption are performed, a block at a time, with the following two functions:
rijndaelEncrypt(rk, nrounds, plaintext, ciphertext); rijndaelDecrypt(rk, nrounds, ciphertext, plaintext); const unsigned long *rk; pointer to encryption/decryption buffer which was filled by rijndaelSetupEncrypt() or rijndaelSetupDecrypt() int nrounds; number of rounds, as computed by rijndaelSetupEncrypt(), rijndaelSetupDecrypt() or NROUNDS [const] unsigned char plaintext[16]; [const] unsigned char ciphertext[16]; pointers to 16-byte buffers to be encrypted or decrypted; the source buffer has a const qualifier
To satisfy the truly paranoid user, it is probably advisable to clear and delete the buffers after the process is finished.
In the file rijndael.c, a preprocessor macro FULL_UNROLL has been defined. This causes the compiler to generate inline code instead of loops in some places. This produces faster but larger code. You may want to remove this definition if you are programming for an environment that needs smaller but slower code.
The downloaded source code also includes a simple file encryption program and its corresponding decryption program.
The encryption program is called as follows:
encrypt password cryptofile
It encrypts the standard input (padding it with spaces, if necessary), and writes the result to the specified cryptofile.
The decryption program is called as follows:
decrypt password cryptofile
It decrypts the cryptofile contents and sends the result (padded with spaces, if necessary) to the standard output.
These programs should be used only for demonstration purposes, because the use of a password as a key gives an effective key length much shorter than the 256-bit key passed to the Rijndael encryption package.
The programs also have another shortcoming that some users may object to. They encrypt and decrypt each 128-bit block separately. If the plaintext contains identical 128-byte blocks, as many text files do, the blocks will be encrypted identically. This makes some of the plaintext structure visible in the ciphertext, even to someone who does not have the key. The usual practice is to combine each block after the first with the previous blocks (usually by some kind of XOR operation) before encrypting it. This hides repeated blocks very effectively, but it can wreak havoc if even one block of ciphertext is corrupted. The corrupted block AND ALL SUBSEQUENT BLOCKS will become unreadable.


============= Meeting 13-Jun-2012 =============
Agenda
======
0. Preliminaries, 5 mins.
1. pvAccess Spec Publication status, *Bob*. 5 mins.
2. Status of unsigned/introspection changes. See last weeks minutes for last weeks estimates. *Marty*, *Matej*. 15 mins.
- Presumably this work explains Ralph's non-compiles of java repos, though not multiple heads.
- Any other questions on DS implementation sticking points (*Ralph*)
- (Non) plan for Services framework, *Greg*, *Ralph* [3]
3. Services interface definition mechanism proposal (*Matej*, 30 mins) [4]
Matej, please walk us through your proposal.
I'm most interested in how a physicist would write simple code to interact with it at the most practical level - what would one type in matlab or on the command line. Would they need an RPC compiler for instance.
[3] Services Framework Question, http://sourceforge.net/mailarchive/message.php?msg_id=29388360
[4] Service Interface Proposal, http://sourceforge.net/mailarchive/message.php?msg_id=29374311
------------------------ Minutes ----------------------------
Present: BD, DH, MK, NM, MS, GS, GW
Scribe: GS
************
NEW TOPIC: Meeting @DLS
************
DH suggest get hotel reservation ASAP
4 from BNL, 4 from PSI + MS
DH: How about AJ?
GW: try to get him
BD: We're probably going to have to do a beamline requirements meeting twice.
DH: Mark, Daniel Meir
************
NEW TOPIC: pvAccess Spec Announcement
************
GW: sent out words on June 8
BD: will announce it soon
Announcement text:
http://sourceforge.net/mailarchive/message.php?msg_id=29380074
************
NEW TOPIC: Status of unsigned/introspection changes
************
GW: if DH is not available, when can Marty start converting?
MK: it is next step
GW: best case: if available, next week say, when it is useful for DH to work on convert?
MK: Nobody now is using unsigned in java. Fixing on convert on unsign can wait, does not hook anything up.
MK: for java, everything should be compiled now except pvIOCJava
MK: multiple heads issue, fine for all Java module, and good for pvDataCPP, pvAccessCPP
MK: main branch: do we do on own branch or default branch?
MS: pvAccessCPP does not compile now (not yet committed and pushed). Matej expects to have it done in a day or two.
Each release should be a branch.
Before we started on unsigned, etc Matej created a tag on all of:
pvData, pvAccess, pvIOC, pvService for both Java and CPP.
The bete release should be based on a branch created via these tags.
Conclusion: DH please work with convert of the unsigned method in Java, MK is going to concentrate on upgrading pvServiceJava unless we have all java modules work again
next step after that is the pvIOCCPP
GS: Do we need a function review for pvIOC?
GW: not on the charter, should be on next charter
GW: For this charter, requirement should be only pvIOCCPP support the gather framework, talking to V3 IOC PVs.
GS: Why not use a gather service [at host level] rather than using a gather in the cpp pvIOC?
MK: since one can avoid using pvAccess at a second step.
[GW: and the IOC developer can work only in at the embedded IOC level]
GS: There is too much to do in gather to install gather into V3 IOC into pvIOC cpp.
MK: [discussing what he has done for pvIOCCPP rpc. May not be possible to add RPC support without a full database].
MK: Worthwhile adding channelget, channelPut & monitor to pvIOCCPP.
GW: First alternative is to use ca provider of pvAccess. [2nd alt is to use v3Channel in V3 ioc]
JR: MK, can you monitor a V3 record with pvAccess by running v3Channel on a V3 IOC[as well as get,put].
MK: Yes it does, but only for single V3 record.
GW: That leaves the most derired fiunctionality being to get >1 V3 PV at a time, ie, gather framework.
GS: MK, can you give us an example of using v3Channel.
JR: Yes, example is too complicated.
GS: First things is an example.
JR: RPC basically works on pvIOCCPP, in that you can instantiate a RPC object of PVIOCCPP. It can't connect to a database [but it can get data from a different source].
JR: Check out the archiver example, that has a working pvIOCCPP RPC implementation example.
************
AI: on JR to clean up the example of v3Channel usage, to illustrate getting V3 PV data through pvAccess. Update documentation and source code. Work on branch from working version, and then attempt to merge into
tip. Update Architecture document to include this.
************
GS: [Still wants functional review for pvIOCCPP. Specifically what satisfies Dirk's requirements and GS's requirements]
JR: What is it you wnat to do - monitor the progress of a gather?
GS: yes.
JR: There is no way to put data into a v4 structure and monitor that.
MK: Does want some requirements input.
Conclusion:
All try to help MK get functional requirements for gather on embedded IOC
MK start on gather before he gets functional requirements.
review at Diamond meeting.
JR to clean up existing eample of v3Channel
Can presently use v3Channel to monitor as well as get put a v3 pv throught pvAccess now
************
NEW TOPIC: Services interface definition mechanism proposal
************
MS: Idea, user shouldn't pack and unpack pvStructures. A generator should compile an interface definition to a pvStructure IO.
DH: re the use of _META, was to allow getting the interface in introspection data. How is that impacted by MS' proposal.
NM: What's the difference between Ms' approach and CORBA?
MS: on DH's q, Well, I just think _META is ugly.
MS: no real difference.
JR: No actual problem with CORBA other than bloated, so maybe it is appropriate to borrow RPC idea from
JR: At some point, pv channelPut should probably be merged with channelRpc.
Conclusion:
It is probably not productive to change the method of rpc - that is, the method of getting named data subject
to parameters, at this stage. There isn't anything we can't do now, so not worth changing.
Later, we may revisit possibly merge of pv channelPutGet and channelRPC.
The question of how to communicate service interfaces is open though, and it impacts Normative Types, so
we do have to do that soon.
Meeting ends.


The mapping package contains the different mapping
strategies.
They are used by the class
{@link ch.ethz.infsec.secureumlgui.usecasemapper.control.Controller Controller}
in the package
{@link ch.ethz.infsec.secureumlgui.usecasemapper.control control}.


Security Class
Collection of static methods for handling security within a website running on PICKLES. Requires sessions to be enabled.
Located in /classes/Security.php (line 27)
Between Level
Checks the user's access level against the passed range.
Generate Hash
Generates an SHA1 hash from the provided string. Optionally can be salted.
Has Level
Checks the user's access level against the passed level.
Is Level
Checks the user's access level is exactly the passed level
Login
Creates a session variable containing the user ID and generated token. The token is also assigned to a cookie to be used when validating the security level.
Logout
Clears out the security information in the session and the cookie.
Documentation generated on Fri, 24 Dec 2010 19:43:55 -0500 by phpDocumentor 1.4.3


More...
|
| | Builder (TKeyMap component) |
| |
| virtual TBuilder | Binding (Action< KeyBindingCollection > action) |
| | Either a single object describing a handling function for s specified key (or set of keys), or an array of such objects. More...
|
| |
| virtual TBuilder | EventName (string eventName) |
| | The event to listen for to pick up key events. Defaults to: "keydown" More...
|
| |
| virtual TBuilder | ComponentEvent (bool componentEvent) |
| | True to listen component event instead underlying element More...
|
| |
| virtual TBuilder | ComponentElement (string componentElement) |
| | Element name of target component (can be used if KeyMap belongs to a component) More...
|
| |
| virtual TBuilder | IgnoreInputFields (bool ignoreInputFields) |
| | Configure this as true if there are any input fields within the target, and this KeyNav should not process events from input fields, (<input>, <textarea> and elements withcontentEditable="true"). Defaults to: false More...
|
| |
| virtual TBuilder | Priority (int? priority) |
| | The priority to set on this KeyMap's listener. Listeners with a higher priority are fired before those with lower priority. More...
|
| |
| virtual TBuilder | ProcessEvent (Action< JFunction > action) |
| |
| virtual TBuilder | ProcessEventScope (string processEventScope) |
| | The scope (this context) in which the processEvent method is executed. More...
|
| |
| virtual TBuilder | Target (string target) |
| | The object on which to listen for the event specified by the eventName config option. More...
|
| |
| | Builder () |
| |
| | Builder (KeyMap component) |
| |
| | Builder (KeyMap.Config config) |
| |
| | Builder (TLazyObservable component) |
| |
- Type Constraints
-
| TKeyMap | : | KeyMap | |
| TBuilder | : | Builder | |
| TBuilder | : | TKeyMap | |
| TBuilder | : | TBuilder | |
◆ Builder() [1/4]
◆ Builder() [2/4]
◆ Builder() [3/4]
◆ Builder() [4/4]
◆ Binding()
Either a single object describing a handling function for s specified key (or set of keys), or an array of such objects.
- Parameters
-
| action | The action delegate |
- Returns
- An instance of TBuilder
◆ ComponentElement()
Element name of target component (can be used if KeyMap belongs to a component)
◆ ComponentEvent()
True to listen component event instead underlying element
◆ EventName()
The event to listen for to pick up key events. Defaults to: "keydown"
◆ IgnoreInputFields()
Configure this as true if there are any input fields within the target, and this KeyNav should not process events from input fields, (<input>, <textarea> and elements withcontentEditable="true"). Defaults to: false
◆ operator Builder()
◆ Priority()
The priority to set on this KeyMap's listener. Listeners with a higher priority are fired before those with lower priority.
◆ ProcessEvent()
- Parameters
-
| action | The action delegate |
- Returns
- An instance of TBuilder
◆ ProcessEventScope()
The scope (this context) in which the processEvent method is executed.
◆ Target()
The object on which to listen for the event specified by the eventName config option.
The documentation for this class was generated from the following file:


@* * Copyright 2010-2017 Artima, Inc. * * 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 * * http://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. *@ @nonHomePage("Sponsor") {
By sponsoring the ScalaTest open source project, you can raise your company’s profile among ScalaTest's large user base and enjoy goodwill from the community for supporting an open source project.
We’ll feature your ad consisting of a statement of sponsorship, a graphic logo, and a text hyperlink to a landing page of your choice on ScalaTest.org and Scalactic.org, including Scaladoc documentation. You'll also be invited to participate in a quarterly sponsors meeting where you can give input and guidance on the future direction of the project.
Want more information? Download our Media Kit to learn more:


Flocking Simulation
Separation Weight
Desired Separation
Alignment Weight
Desired Alignment
Cohesion Weight
Desired Cohesion
Change color scheme of Canvas area
R
G
B


Hey
Let's
GetUp
Let's
Make
It
Watch
It
Happening
It do
Happen
Now
If not
Today,
Never
Buckle Up
Now
Start!!


node-dateformat
A node.js package for Steven Levithan's excellent dateFormat() function.
Modifications
- Removed the
Date.prototype.format
method. Sorry folks, but extending native prototypes is for suckers. - Added a
module.exports = dateFormat;
statement at the bottom
Usage
As taken from Steven's post, modified to match the Modifications listed above:
var dateFormat = require('dateformat');
var now = new Date();
// Basic usage
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");
// Saturday, June 9th, 2007, 5:46:21 PM
// You can use one of several named masks
dateFormat(now, "isoDateTime");
// 2007-06-09T17:46:21
// ...Or add your own
dateFormat.masks.hammerTime = 'HH:MM! "Can\'t touch this!"';
dateFormat(now, "hammerTime");
// 17:46! Can't touch this!
// When using the standalone dateFormat function,
// you can also provide the date as a string
dateFormat("Jun 9 2007", "fullDate");
// Saturday, June 9, 2007
// Note that if you don't include the mask argument,
// dateFormat.masks.default is used
dateFormat(now);
// Sat Jun 09 2007 17:46:21
// And if you don't include the date argument,
// the current date and time is used
dateFormat();
// Sat Jun 09 2007 17:46:22
// You can also skip the date argument (as long as your mask doesn't
// contain any numbers), in which case the current date/time is used
dateFormat("longTime");
// 5:46:22 PM EST
// And finally, you can convert local time to UTC time. Simply pass in
// true as an additional argument (no argument skipping allowed in this case):
dateFormat(now, "longTime", true);
// 10:46:21 PM UTC
// ...Or add the prefix "UTC:" to your mask.
dateFormat(now, "UTC:h:MM:ss TT Z");
// 10:46:21 PM UTC
// You can also get the ISO 8601 week of the year:
dateFormat(now, "W");
// 42
License
(c) 2007-2009 Steven Levithan stevenlevithan.com, MIT license.


Return to main page
THIS PROJECT IS STILL UNDER DEVELOPMENT
Source code available at GitHub
If you don't want to dig into Audio Network internals you can use following 'Quick Config'
buttons to setup some common configurations:
Default settings used when this page loads. The most reliable PSK transmission scheme - Binary Phase Shift Keying:
Two times faster baud rate (8) and two times more PSK symbols (PSK-4, Quadrature Phase Shift Keying):
10 symbols PSK scheme and baud 4 - you can send for example phone numbers by directly using PSK symbols:
Experiments with higher speeds (under testing - it may blow the app):
Orthogonal frequency-division multiplexing (OFDM) and multiple channel 'Quick Config' buttons are still under development/testing!


Tesla’s first electric truck is here and it costs roughly $50,000 in Canada
According to Musk, a 9mm handgun can't even shoot through its shell
by Brad BennettAt long last Elon Musk and Tesla have revealed a very futuristic looking all-electric pickup truck, which is aptly named Cybertruck
The truck starts at roughly $50,000 in Canada and is slated to be available in either late 2021 or early 2022, depending on the spec you get. You can place a deposit down on the pickup, but in Canda, it’s going to cost you at least $150. You can grab your spot in the preorder line by visiting Tesla’s Cybertruck website.
Let’s unpack all the news from Tesla’s latest livestream
Just like the yet to be released Model Y, Tesla is rolling out the varying trims of the truck in stages. The single motor RWD and the dual-motor AWD trims are going to begin production in late 2021. The high-end tri-motor AWD version is going to start in late 2022.
The truck is also packing in a four-inch adaptive air suspension so it can maintain a level stance even when the back is packed full of gear. To show this off, Musk brought out the company’s newly announced SUV and drove it into the back. The truck adjusted itself to stay level, even with the added weight.
The air suspension also allows the truck to have a built-in air compressor.
Is this the look of the future?
Musk has been teasing a very Blade Runner-esque design for a long time now, but I don’t think anyone expected the truck to roll onto the stage looking exactly like it does.
Cybertruck features a matte grey stainless steel finish and sharp angles all over the place. Its headlights are even a single strip of lights along the nose of the vehicle.
Tesla’s website says the steel is made out of ultra-hard 30x cold-rolled stainless steel, and that makes it much tougher than a traditional truck. To demonstrate this the truck’s designer, Franz von Holzhausen, came out and hit the side of the truck with a mallet and it didn’t leave a dent.
This super-strong exoskeleton should also help protect passengers in a crash. Speaking of passengers, it can seak six people.
On the inside, it’s got a massive 17-inch touchscreen and a non-traditional steering wheel that looks more like something out of a sports car than a truck.
I think the look of Rivian R1T is a more appealing electric truck, and that vehicle is supposed to come to market next yea so it may have the one up on Tesla.
How much will it cost you?
- Single Motor RWD – $39,000 USD (roughly, $50,980 CAD) – 402 km estimated range
- Dual Motor AWD – $49,900 USD (roughly, $64,052 CAD) – 482 km estimated range
- Tri Motor AWD – $69,900 USD (roughly, $90,196 CAD) – 804 km estimated range
The full self-driving add-on package in Canada costs $9,200.
The automaker has yet to release specific Canadian pricing and specs. These numbers are the American values converted to Canadian dollars and km. This means they could change slightly.
As always, MobileSyrup will update this post with Canadian information when it’s available.
How does it stack up against a traditional truck?
Musk took no time taking shots at other manufacturers at the event and especially making sure to emphasize that it’s built tough.
After showing off the steel siding, he had an employee drop a metal weight onto a sheet of glass, and it didn’t break. That said, when they threw the weight at the truck’s actual window, it did break.
After that, it did a tug of war contest with a Ford F-150 and it seemed to pull the gas-powered truck with no problems.
Musk wasn’t done there. He also showed a video of the truck racing against a Porshe 911 and it seemed to beat the vehicle in a drag race.
- Single Motor RWD – 7,500 lbs of towing capacity – 0 to 60 in 6.5 seconds
- Dual Motor AWD – 10,000 lbs towing capacity – 0 to 60 in 4.5 seconds
- Tri Motor AWD – 14,000 lbs of towing capacity – 0 to 60 in 2.9 seconds
It’s also packing a few onboard power outlets so you can plug things in and even use power tools.
When the tailgate is down, users can also drag a ramp out of it to make it easy to drive smaller vehicles like ATVs and dirt bikes into the truck’s bed.
Source: Tesla


Design Guide¶
MicroPython has created a great foundation to build upon and to make it even better for beginners we’ve created CircuitPython. This guide covers a number of ways the core and libraries are geared towards beginners.
Start libraries with the cookiecutter¶
Cookiecutter is a cool tool that lets you bootstrap a new repo based on another repo. We’ve made one here for CircuitPython libraries that include configs for Travis CI and ReadTheDocs along with a setup.py, license, code of conduct and readme.
Module Naming¶
Adafruit funded libraries should be under the
adafruit organization and have the format
Adafruit_CircuitPython_<name>
and have a corresponding adafruit_<name>
directory (aka package) or adafruit_<name>.py
file (aka module).
Community created libraries should have the format CircuitPython_<name>
and
not have the adafruit_
module or package prefix.
Both should have the CircuitPython repository topic on GitHub.
Lifetime and ContextManagers¶
A driver should be initialized and ready to use after construction. If the
device requires deinitialization, then provide it through deinit()
and also
provide __enter__
and __exit__
to create a context manager usable with
with
.
For example, a user can then use deinit()`
:
import digitalio
import board
led = digitalio.DigitalInOut(board.D13)
led.direction = digitalio.Direction.OUTPUT
for i in range(10):
led.value = True
time.sleep(0.5)
led.value = False
time.sleep(0.5)
led.deinit()
This will deinit the underlying hardware at the end of the program as long as no exceptions occur.
Alternatively, using a with
statement ensures that the hardware is deinitialized:
import digitalio
import board
with digitalio.DigitalInOut(board.D13) as led:
led.direction = digitalio.Direction.OUTPUT
for i in range(10):
led.value = True
time.sleep(0.5)
led.value = False
time.sleep(0.5)
Python’s with
statement ensures that the deinit code is run regardless of
whether the code within the with statement executes without exceptions.
For small programs like the examples this isn’t a major concern because all user usable hardware is reset after programs are run or the REPL is run. However, for more complex programs that may use hardware intermittently and may also handle exceptions on their own, deinitializing the hardware using a with statement will ensure hardware isn’t enabled longer than needed.
Verify your device¶
Whenever possible, make sure device you are talking to is the device you expect. If not, raise a ValueError. Beware that I2C addresses can be identical on different devices so read registers you know to make sure they match your expectation. Validating this upfront will help catch mistakes.
Getters/Setters¶
When designing a driver for a device, use properties for device state and use methods for sequences of abstract actions that the device performs. State is a property of the device as a whole that exists regardless of what the code is doing. This includes things like temperature, time, sound, light and the state of a switch. For a more complete list see the sensor properties bullet below.
Another way to separate state from actions is that state is usually something the user can sense themselves by sight or feel for example. Actions are something the user can watch. The device does this and then this.
Making this separation clear to the user will help beginners understand when to use what.
Here is more info on properties from Python.
Design for compatibility with CPython¶
CircuitPython is aimed to be one’s first experience with code. It will be the first step into the world of hardware and software. To ease one’s exploration out from this first step, make sure that functionality shared with CPython shares the same API. It doesn’t need to be the full API it can be a subset. However, do not add non-CPython APIs to the same modules. Instead, use separate non-CPython modules to add extra functionality. By distinguishing API boundaries at modules you increase the likelihood that incorrect expectations are found on import and not randomly during runtime.
Example¶
When adding extra functionality to CircuitPython to mimic what a normal
operating system would do, either copy an existing CPython API (for example file
writing) or create a separate module to achieve what you want. For example,
mounting and unmount drives is not a part of CPython so it should be done in a
module, such as a new storage
module, that is only available in CircuitPython.
That way when someone moves the code to CPython they know what parts need to be
adapted.
Document inline¶
Whenever possible, document your code right next to the code that implements it. This makes it more likely to stay up to date with the implementation itself. Use Sphinx’s automodule to format these all nicely in ReadTheDocs. The cookiecutter helps set these up.
Use Sphinx flavor rST for markup.
Lots of documentation is a good thing but it can take a lot of space. To minimize the space used on disk and on load, distribute the library as both .py and .mpy, MicroPython and CircuitPython’s bytecode format that omits comments.
Module description¶
After the license comment:
"""
`<module name>` - <Short description>
=================================================
<Longer description.>
"""
Class description¶
Documenting what the object does:
class DS3231:
"""Interface to the DS3231 RTC."""
Renders as:
-
class
DS3231
Interface to the DS3231 RTC.
Data descriptor description¶
Comment is after even though its weird:
lost_power = i2c_bit.RWBit(0x0f, 7)
"""True if the device has lost power since the time was set."""
Renders as:
-
lost_power
True if the device has lost power since the time was set.
Method description¶
First line after the method definition:
def turn_right(self, degrees):
"""Turns the bot ``degrees`` right.
:param float degrees: Degrees to turn right
"""
Renders as:
-
turn_right
(degrees) Turns the bot
degrees
right.Parameters: degrees (float) – Degrees to turn right
Property description¶
Comment comes from the getter:
@property
def datetime(self):
"""The current date and time"""
return self.datetime_register
@datetime.setter
def datetime(self, value):
pass
Renders as:
-
datetime
The current date and time
Use BusDevice¶
[BusDevice](https://github.com/adafruit/Adafruit_CircuitPython_BusDevice) is an awesome foundational library that manages talking on a shared I2C or SPI device for you. The devices manage locking which ensures that a transfer is done as a single unit despite CircuitPython internals and, in the future, other Python threads. For I2C, the device also manages the device address. The SPI device, manages baudrate settings, chip select line and extra post-transaction clock cycles.
I2C Example¶
from adafruit_bus_device import i2c_device
class Widget:
"""A generic widget."""
def __init__(self, i2c):
# Always on address 0x40.
self.i2c_device = i2c_device.I2CDevice(i2c, 0x40)
self.buf = bytearray(1)
@property
def register(self):
"""Widget's one register."""
with self.i2c_device as i2c:
i2c.writeto(b'0x00')
i2c.readfrom_into(self.buf)
return self.buf[0]
SPI Example¶
from adafruit_bus_device import spi_device
class SPIWidget:
"""A generic widget with a weird baudrate."""
def __init__(self, spi, chip_select):
# chip_select is a pin reference such as board.D10.
self.spi_device = spi_device.SPIDevice(spi, chip_select, baudrate=12345)
self.buf = bytearray(1)
@property
def register(self):
"""Widget's one register."""
with self.spi_device as spi:
spi.write(b'0x00')
i2c.readinto(self.buf)
return self.buf[0]
Use composition¶
When writing a driver, take in objects that provide the functionality you need rather than taking their arguments and constructing them yourself or subclassing a parent class with functionality. This technique is known as composition and leads to code that is more flexible and testable than traditional inheritance.
See also
Wikipedia has more information on “dependency inversion”.
For example, if you are writing a driver for an I2C device, then take in an I2C object instead of the pins themselves. This allows the calling code to provide any object with the appropriate methods such as an I2C expansion board.
Another example is to expect a DigitalInOut
for a pin to toggle instead of a
microcontroller.Pin
from board
. Taking in the ~microcontroller.Pin
object
alone would limit the driver to pins on the actual microcontroller instead of pins
provided by another driver such as an IO expander.
 So, create many small libraries that can be loaded as needed instead of one large file that does everything.
Speed second¶
Speed isn’t as important as API clarity and code size. So, prefer simple APIs like properties for state even if it sacrifices a bit of speed.
Avoid allocations in drivers¶
Although Python doesn’t require managing memory, its still a good practice for
library writers to think about memory allocations. Avoid them in drivers if
you can because you never know how much something will be called. Fewer
allocations means less time spent cleaning up. So, where you can, prefer
bytearray buffers that are created in __init__
and used throughout the
object with methods that read or write into the buffer instead of creating new
objects. Unified hardware API classes such as busio.SPI
are design to read and
write to subsections of buffers.
Its ok to allocate an object to return to the user. Just beware of causing more than one allocation per call due to internal logic.
However, this is a memory tradeoff so do not do it for large or rarely used buffers.
Examples¶
ustruct.pack¶
Use ustruct.pack_into
instead of ustruct.pack
.
Sensor properties and units¶
The Adafruit Unified Sensor Driver Arduino library has a great list of measurements and their units. Use the same ones including the property name itself so that drivers can be used interchangeably when they have the same properties.
| Property name | Python type | Units |
|---|---|---|
acceleration |
(float, float, float) | x, y, z meter per second per second |
magnetic |
float | micro-Tesla (uT) |
orientation |
(float, float, float) | x, y, z degrees |
gyro |
(float, float, float) | x, y, z radians per second |
temperature |
float | degrees centigrade |
distance |
float | centimeters |
light |
float | SI lux |
pressure |
float | hectopascal (hPa) |
relative_humidity |
float | percent |
current |
float | milliamps (mA) |
voltage |
float | volts (V) |
color |
int | RGB, eight bits per channel (0xff0000 is red) |
alarm |
(time.struct, str) | Sample alarm time and string to characterize frequency such as “hourly” |
datetime |
time.struct | date and time |
Common APIs¶
Outside of sensors, having common methods amongst drivers for similar devices such as devices can be really useful. Its early days however. For now, try to adhere to guidelines in this document. Once a design is settled on, add it as a subsection to this one.
Adding native modules¶
The Python API for a new module should be defined and documented in
shared-bindings
and define an underlying C API. If the implementation is
port-agnostic or relies on underlying APIs of another module, the code should
live in shared-module
. If it is port specific then it should live in common-hal
within the port’s folder. In either case, the file and folder structure should
mimic the structure in shared-bindings
.
MicroPython compatibility¶
Keeping compatibility with MicroPython isn’t a high priority. It should be done when its not in conflict with any of the above goals.


--- layout: default title: "Openings" description: "New positions available with our Lab" group: navigation navorder: 7 --- {% include JB/setup %}
We look for motivated students and interns in our group who are interested to work in the following areas:
Interested students can email their latest CV at<EMAIL_ADDRESS>subject line of email should follow the following format: Application for PhD/intern/RA/BTP etc.
We are also open to industry collaboration to solve interesting research problems which can facilitate society. If you are interested to collaborate with MIDAS then feel free to call us at +91-11-26907495 or email us at midas@iiitd.ac.in


Demo
Basic Histogram
Stacked Histogram
Histogram with reference curve and thresholds
Mixed Line and Bar Histogram
Overlapping Bar Histogram
Basic Bar Histogram
Stacked Histogram
Histogram with reference curve and thresholds
Mixed Line and Bar Histogram
Overlapping Bar Histogram


This is used internally by [page:PointLight PointLights] for calculating shadows, and also serves as a base class for the other shadow classes.
//Create a WebGLRenderer and turn on shadows in the renderer
var renderer = new THREE.WebGLRenderer();
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap; // default THREE.PCFShadowMap
//Create a PointLight and turn on shadows for the light
var light = new THREE.PointLight( 0xffffff, 1, 100 );
light.position.set( 0, 10, 0 );
light.castShadow = true; // default false
scene.add( light );
//Set up shadow properties for the light
light.shadow.mapSize.width = 512; // default
light.shadow.mapSize.height = 512; // default
light.shadow.camera.near = 0.5; // default
light.shadow.camera.far = 500 // default
//Create a sphere that cast shadows (but does not receive them)
var sphereGeometry = new THREE.SphereBufferGeometry( 5, 32, 32 );
var sphereMaterial = new THREE.MeshStandardMaterial( { color: 0xff0000 } );
var sphere = new THREE.Mesh( sphereGeometry, sphereMaterial );
sphere.castShadow = true; //default is false
sphere.receiveShadow = false; //default
scene.add( sphere );
//Create a plane that receives shadows (but does not cast them)
var planeGeometry = new THREE.PlaneBufferGeometry( 20, 20, 32, 32 );
var planeMaterial = new THREE.MeshStandardMaterial( { color: 0x00ff00 } )
var plane = new THREE.Mesh( planeGeometry, planeMaterial );
plane.receiveShadow = true;
scene.add( plane );
//Create a helper for the shadow camera (optional)
var helper = new THREE.CameraHelper( light.shadow.camera );
scene.add( helper );
[page:Camera camera] - the light's view of the world.
Create a new [name]. This is not intended to be called directly - it is called
internally by [page:PointLight] or used as a base class by other light shadows.
The light's view of the world. This is used to generate a depth map of the scene; objects behind other objects from the light's perspective will be in shadow.
Shadow map bias, how much to add or subtract from the normalized depth when deciding whether a surface is in shadow.
The default is 0. Very tiny adjustments here (in the order of 0.0001) may help reduce artefacts in shadows
The depth map generated using the internal camera; a location beyond a pixel's depth is in shadow. Computed internally during rendering.
A [Page:Vector2] defining the width and height of the shadow map.
Higher values give better quality shadows at the cost of computation time. Values must be
powers of 2, up to the [page:WebGLRenderer.capabilities].maxTextureSize for a given device,
although the width and height don't have to be the same (so, for example, (512, 1024) is valid).
The default is *( 512, 512 )*.
Model to shadow camera space, to compute location and depth in shadow map. Stored in a [page:Matrix4 Matrix4]. This is computed internally during rendering.
Setting this to values greater than 1 will blur the edges of the shadow.
High values will cause unwanted banding effects in the shadows - a greater [page:.mapSize mapSize]
will allow for a higher value to be used here before these effects become visible.
Note that this has no effect if the [page:WebGLRenderer.shadowMap.type] is set to [page:Renderer BasicShadowMap].
Copies value of all the properties from the [page:LightShadow source] to this SpotLight.
Creates a new LightShadow with the same properties as this one.
Serialize this LightShadow.


VueJS Date Tools
Lightweight VueJS date components using date-fns
View the source code
We're sorry but vue-date-tools doesn't work properly without JavaScript enabled. Please enable it to continue.


Dussart Pedrón Winery / CRUX arquitectos
- Curated by Clara Ott
- about 14 hours
Refurbishment · Los Pedrones, Spain
- version="1.0" encoding="UTF-8"? Architects: CRUX arquitectos
- AreaArea of this architecture projectArea: 156.0 ft2
- version="1.0" encoding="UTF-8"?YearCompletion year of this architecture project Year: 2017
- version="1.0" encoding="UTF-8"?PhotographsPhotographs: Milena Villalba
- version="1.0" encoding="UTF-8"?ManufacturersBrands with products used in this architecture project Manufacturers: Ascensores Valencia S. L., Hormigones Martínez S. A., JUNG, Placo, Saint-Gobain Glass
Text description provided by the architects. The "Dussart Pedrón Winery”, situated in the town of Los Pedrones, in Requena (Valencia), is the new space to come out of the rehabilitation of a familiar, old structure with numerous former lives.
The current space, of 156m2, was originally a barn, an elongated volume on one floor with a large patio attached. Later, it was converted into a storehouse, using the barn as a warehouse […] In the 60s, upon creation of the town cooperative, the winery stopped producing wine and converted itself into a warehouse. Today, its descendants have come from France, leaving their lives behind, in order to rescue the family winery which their great-grandfather began one day in the distant past. Simultaneously, they are also rescuing the production of wine which had been abandoned.
The intervention uses the passing of time like another construction material, without hiding the scars. In this ‘territory space’ the new installations have been placed, using easily identifiable materials of the times. The original structure has been revised, acting with each element in a personalised way. The roof has kept its original corrugated structure, upon which a water treatment system has been placed, tongue and groove wooden slats have replaced reeds and the tiles washed and put back in their original place. The north face, still showing the traces of its farmhouse past, has been kept this way, with its peeping gaps and cracks. On the lower level where the family began to produce wine over one hundred years ago, one finds the brick wall where the original stores were kept.
Upon this regenerative canvas the entirety of the new program is based, contained within three related spaces. At ground level, outlined by the entrance on the east side, one finds the original expansion dedicated to production, through which two other rooms can be accessed. These rooms are situated on two levels on the western nave: the basement, consisting of former concrete tanks has been converted into the wine cellar, taking advantage of its thermal inertia for the barrel ageing, whilst the first floor is used as the receiving area for the grapes; combining the restrooms and laboratory and a new opening which perforates the stone wall.
These levels have been redefined based on a reinforced concrete structure which consolidates and reinforces the construction, allowing for the new purpose. The stairs and lifts are situated in the middle, surrounding the principal pillar and creating a central area. The new walls are made of white plasterboard, which have been positioned like a perimeter wall surrounding the space, integrating the restrooms and making the surfaces washable for the appropriate functioning of the winery. In the space between these two elements one finds ‘mood lighting,’ which enhances the texture of the walls and the curves of the ceiling, but which simultaneously highlights the separation and distance.
This intervention represents a layer upon construction, just skimming the surface, like a reversible installation which at the same time provides a blank page from which to begin again.


NB: The following list is static (to avoid setting up a server-side application for this demo), which is why you'll always get the same results.
You can refine your query using the following terms:
Your query matched the following websites:


Before Change
feed_dict[self._training_placeholder] = 0.0
feed_results = self.session.run(outputs, feed_dict=feed_dict)
if len(feed_results) > 1:
result = undo_transforms(np.stack(feed_results, 1), transformers)
feed_results = [result[:, i] for i in range(result.shape[1])]
elif len(feed_results) == 1:
result = undo_transforms(feed_results[0], transformers)
feed_results = [result]
for ind, result in enumerate(feed_results):
After Change
feed_dict[self._training_placeholder] = 0.0
feed_results = self.session.run(outputs, feed_dict=feed_dict)
if len(feed_results) > 1:
if len(transformers):
raise ValueError("Does not support transformations "
"for multiple outputs.")
elif len(feed_results) == 1: