We also offer unique opportunities for residential and commercial projects, including commercial villa plots, commercial showroom plots, and warehousing plots.
I am pleased to introduce the first edition of the Diyar Al Muharraq newsletter called Diyarna, which will help to keep everyone up to date with our latest news and exciting project milestones.
Diyar Al Muharraq is one of the largest real estate developments in the Kingdom of Bahrain. It is a fully-integrated modern city best described as a complete society, incorporating a strong line-up of residential projects such as Hai Al Noor, Hai Al Sherooq, Al Bareh, Al Naseem, Jeewan, Deerat Al Oyoun, to name a few. While each project has a distinct appeal, they are all ideal for individuals and families with different needs.
Accordingly, we also offer unique opportunities for residential and commercial projects, including commercial villa plots, commercial showroom plots, and warehousing plots. The plots are strategically located around Diyar Al Muharraq, which will help to attract a greater number of business owners, investors and shoppers.
This December is set to be a landmark month. We look forward to opening Hadiqat Al Diyar, the largest park in Diyar Al Muharraq’s masterplan. In addition, special cycling and walking paths will be completed by the end of this year. Meanwhile, we are proud of our continued progress in implementing the masterplan, which is moving on schedule.
Work on the landscaping, the deep gravity foul sewer network and the landscaping irrigation network including the irrigation holding tank has gained momentum and is almost complete. The Water Distribution Station is completed and is now being operated by EWA. The vast majority of the main roads in the South Island are now also completed with the final roads in the South Island being completed by mid-2021. Additionally, the South Island master plan remaining infrastructure will be approximately 80% completed by the end of the first quarter of 2020.
On behalf of Diyar Al Muharraq, I would like to thank you all for your continuous support and trust, which are vital for the company to achieve its plans and goals. You can keep apprised on all the latest details from our projects by subscribing to our newsletter.
Wishing you a pleasant read.
Best regards,
Eng. Ahmed Alammadi
Chief Executive Officer
Hadiqat Al Diyar Park set to open later this year
Hadiqat Al Diyar, the largest park in Diyar Al Muharraq’s masterplan is set for completion in the fourth quarter of this year. With lush green spaces and landscaping, it will offer a range of amenities for families and individuals.
Located at the main entrance next to Shaikh Isa Bin Salman Al Khalifa Grand Mosque, the 32,800 SQM park is set to be one of Diyar Al Muharraq’s most popular attractions, supporting the developer’s vision to offer a contemporary and enjoyable lifestyle within the fully integrated, modern city.
Hadiqat Al Diyar features more than 200 parking spaces, two football pitches, one multi-purpose hall, and a children’s play area covering almost 400 SQM. It will also offer a running track, two outdoor gyms, a children’s playground, two large picnic spaces, and a food & beverage area.
Dragon City Bahrain Welcomes 7.5 Million Visitors This Year
Dragon City Bahrain has welcomed more than 7.5 million visitors in 2019 so far, attracting almost a million shoppers this August alone.
787
99.9%
750,000
Commercial Units
Dragon city Bahrain
Leasing Rate
Average Monthly
Shoppers FOOTFALL
The daily average footfall during the month exceeded 25,000 visitors per day, an 8.6% jump compared with the same period last year. The record-breaking accomplishment reflects the mall’s growing reputation as one of Bahrain’s leading family shopping destinations.
August also saw the unveiling of a new mascot, DiDi the Dragon, which is the mall’s face across marketing channels and events. DiDi’s debut is in line with the strategy of Chinamex, Dragon City Bahrain’s operating company, to cement the mall’s position as the first choice for shoppers from Bahrain and neighboring countries.
To ensure visitors enjoy a fun and rewarding shopping experience, Dragon City Bahrain frequently organizes contests, promotions, and raffles. The mall’s popular Scratch & Win’ campaign is running every month until the end of the year, giving shoppers who spend BD 20 and above the chance to win valuable prizes.
The first project of its kind in the Kingdom, Dragon City includes Dragon City Bahrain, which is home to more than 787 commercial units, Dragon apartments, Thai Mart, Dragon Plaza, and an allocated area for warehouses.
Commercial Showrooms available in a Prime Location
Freehold ownership
No registration fee
Diyar Al Muharraq is redefining the retail experience for shoppers, businesses, and investors alike with its Commercial Showroom Plots, now available for freehold ownership with no registration fee.
Located near Diyar Al Muharraq’s main entrance, they offer great visibility and attract heavy footfall,making them ideal spaces for a wide range of retail businesses. The plots are opposite Marassi Al Bahrain, Marassi Galleria Mall, and Marassi Beach. They are also near Diyar Al Muharraq’s
Business District, Dragon City Bahrain, Souq Al Baraha, and Hadiqat Al Diyar. Plot sizes start from 1,920 SQM.
Commercial Villa Plots ready for Immediate Investment
Surrounded by 5,700 residential unites
Ideal location for businesses to set-up and expand
Diyar Al Muharraq’s rapidly growing commercial and residential community makes it an ideal location for businesses to set-up and expand. With infrastructure work now
completed, Diyar Al Muharraq’s Commercial Villa Plots are ready for immediate investment.
The plots are located at the center of 5 educational institutions surrounded by 5,700 residential unites, and 2 universities, one of which is a medical university. They are also near Diyar Al Muharraq’s entrance and main highways, Marassi Galleria Mall, and Dragon City Bahrain. With sizes starting from 662 SQM, the plots are perfect for businesses as diverse as hair salons, gymnasiums, food outlets, clinics, and florists, among many others.
Warehousing Plots on offer at Business District
Freehold ownership
No registration fee
Warehousing plots within Diyar Al Muharraq’s bustling Business District are now available for freehold ownership with no registration fee. Starting from 1,300 SQM, they are suitable for logistics, warehousing, and other light industry business activities. These plots are located adjacent Dragon City Bahrain and ThaiMart.
Diyar Al Muharraq’s highly connected infrastructure ensures easy access to the Kingdom’s main highways and roads, as well as to Bahrain International Airport and Khalifa Bin Salman Port, making it an ideal location for logistics and warehousing.
Marassi Shores Residences Handover
Handover has begun for the eagerly anticipated Marassi Shores Residences, a key project within the Marassi Al Bahrain development. Offering contemporary living spaces and panoramic sea views, the project is set to be one of the most desirable addresses in the Kingdom.
Spread across 11 floors, Marassi Shores Residences is comprised of 289 apartments offered in studio and 1, 2, 3, 4 and 5-bedroom configurations. Residents can also make the most of its exceptional amenities, including an on-site gym, two swimming pools, children’s play areas, basement parking, and 24-hour security.
Idyllically situated on the waterfront promenade, it is within walking distance of two world-class hotels, Address Marassi Al Bahrain and Vida Marassi Al Bahrain, as well as a range of shopping, dinning, entertainment, and leisure destinations.
ThaiMart the region’s first Thai-inspired shopping destination
ThaiMart, the region’s first Thai-inspired shopping destination, will offer an exceptional variety of Thai products and services under one roof, further bolstering the strong relationship between the two countries.
The project is gaining momentum, with most of its retail space already leased and committed, and construction work is handled by Crown Electro – Mechanical Services. Vega Intertrade and Exhibitions will lease and operate the eagerly anticipated shopping destination.
Spread across 6,000 SQM in the southwest corner of Diyar Al Muharraq, ThaiMart will offer a range of sought after products exclusively imported from Thailand. With its convenient highway access, growing residential and commercial community, and businessfriendly environment, Diyar Al Muharraq is an ideal location for the project.
In addition to jewelry zones, a kids’ area, and a wide selection of retail outlets, ThaiMart will feature a food court housing well-known Thai, international, and regional restaurant chains, a fish market, a vegetable market, and a gold market.
Masterplan comes
together
Designed as a sustainable future city, Diyar Al Muharraq is one of the largest mixed-use real estate development projects in Bahrain.
Upon completion, it will feature a cohesive mix of residential and commercial properties with a strong line-up of projects aimed at creating a vibrant community within a sophisticated township.
Tying the development’s various projects together is an ambitious masterplan, which will streamline traffic flow throughout the development by linking its various sections via a network of roads, as well as pedestrian paths and bicycle tracks, which are scheduled to be completed by the end of this year.
Key updates on the project include the completion of the main roads on Diyar Al Muharraq’s Southern Island and the Water Distribution Station which holds 11 million gallons of water. Additionally, the majority of the secondary road network servicing the villas and plots in the Southern Island
are also completed. Momentum is also gaining for the landscaping and irrigation network projects throughout the Southern Island which will be completed by end of 2019. Roads in Al Qamra, Sarat, Souq Al Baraha and most of the roads in Business District are completed. Works on secondary roads in Hai Al Noor, Hai Al Sherooq and Phase 1 Al Bareh are completed.
Eight primary 66KV substations, along with 159 11KV substations are presently operational. Planning with EWA for the installation of the 220KV substation that will serve the North Island has begun. Fiber optic containment on all existing roads is finalized. Diyar Al Muharraq also announced the completion of infrastructure work on its key projects: Deerat Al Oyoun, Al Qamra, and Al Bareh.
Key Updates
The main roads on Diyar Al Muharraq’s Southern Island are completed
Work on the Water Distribution Station which holds a capacity of 11 million gallons is completed
Secondary roads in Hai Al Noor, Hai Al Sherooq and Phase 1 Al Bareh are completed
Eight primary 66KV substations, along with 159 11KV substations are presently operational
Planning with EWA for the installation of the 220KV substation that will serve the North Island has begun
Fiber optic containment on all existing roads are finalized
Infrastructure work on the key projects: Deerat Al Oyoun, Al Qamra, and Al Bareh is completed
Roads in Al Qamra, Sarat, Souq Al Baraha and most of the roads in Business District are completed
AL Bareh Villas
Seafront Living
Freehold ownership
30% down-payment
Nestled in a prime location on the west of Diyar Al Muharraq development, Al Bareh’s Villas set a benchmark for sophisticated modern living. Now, these stunning villas are available freehold with down payments of just 30% and the remaining 70% upon completion.
Al Bareh Villas offer residents a soothing environment, panoramic sea views, a view of the main canal, and connectivity with Diyar Al Muharraq’s quintessential lifestyle and many amenities.
Plot sizes range from 480 to 1,811 SQM.
Modern Waterfront Living at Al Naseem Villas
Freehold ownership
3 years of free service charges
Al Naseem is an independent, gated residential community in the heart of Diyar Al Muharraq. With serine views overlooking outer and inner canals, it offers residents an unmatched waterfront lifestyle.
Al Naseem’s stunning freehold villas are now open for investment with 3 years of free service charges. The villas are walking distance from a 100-berth marina, a promenade with many restaurants and shopping options, a leisure club packed with amenities, including a gym and a cinema, parks, recreational facilities, and a community mosque.
An Attractive Investment Opportunity for Residential Building Plots
Freehold ownership
Ready for immediate investment
Coveted residential building plots in the iconic Diyar Al Muharraq development are available freehold for immediate investment. Located near Diyar Al Muharraq’s main entrance, the plots are ideal for 6 storey residential buildings and can be used to provide sought after accommodation for residents working near the development.
The plots are opposite Marassi Galleria Mall, and next to Souq Al Baraha, 5 schools, 2 universities, one of which is a medical university, Diyar Al Muharraq’s Business District, and two hotels. Plot sizes start from 1,290 SQM.
Few plots are available, act now and register your interest today!
Digital Update
Going green and creating an eco-friendly development, Diyar Al Muharraq designed and built paths where you can ride a bike on and other lanes to practice walking or jogging. Explore with a friend that would like to go cycling in Diyar Al Muharraq.
Diyar Al Muharraq has recognized Amaar Habib and Ali Hussain from the security team for their outstanding efforts to maintain Diyar Al Muharraq’s high security standards. We’re proud of your efforts.
For your chance to win BD100 in shopping vouchers at Dragon City Bahrain, simply subscribe to our newsletter and have a chance to be one of the 3 lucky winners!
Send us your interest to subscribe to our newsletter by visiting: diyar.bh/contact-us
Diyar Al Muharraq is your gateway to a fully integrated modern city, combining the authenticity and originality of Muharraq with its breathtaking sea views, neighborhood community, entertainment facilities, and exciting world-class shopping experience. Join Diyar Al Muharraq’s delightful community and be a part of the city of the future.
Book your store space
at Al Sherooq Plaza
Suitable for all retailer outlets that serve the community such as; supermarkets, beauty salons, spas, mini marts, laundry, florists, cafés, restaurants, bakery and many more.
You are receiving this digital update due to your current engagement with Diyar. If you would no longer like to receive it, please unsubscribe here.
This message is for the designated recipient only and may contain privileged, proprietary, or otherwise confidential information. If you have received it in error, please notify the sender immediately and delete the original. Any other use of the email by you is prohibited.


Home
About
Photos
Videos
Contact
Guestbook
Jazatopia's World
JazatopiaWorld.com
Videos
DOCUMENTARIES
One Day In Detroit - Artists Perspective- We have something to offer too!
Instructional Videos
How to do a Sexy Hip Hip Combination with Cientell-Directed and Edited by Jazatopia Entertainment
Interviews
NoJo Kicks Interview with Clue
Music Videos
"Where is the Party", Jazatopia feat. Cientell
"Baddest Chick" Jazatopia feat. Cientell
Go to my Youtube Page and subscribe.
http://www.youtube.com/JazatopiaEntertainmentLLCCreationChannel
To top


const ( GC_SIZE int = 100 GC_PERIOD time.Duration = 60 * time.Second )
type LeakyBucket struct { Size uint16 Fill float64 LeakInterval time.Duration // time.Duration for 1 unit of size to leak Lastupdate time.Time Now func() time.Time }
func NewLeakyBucket(size uint16, leakInterval time.Duration) *LeakyBucket
func (b *LeakyBucket) DrainedAt() time.Time
The time at which this bucket will be completely drained
func (b *LeakyBucket) Pour(amount uint16) bool
func (b *LeakyBucket) Serialise() *LeakyBucketSer
func (b *LeakyBucket) TimeSinceLastUpdate() time.Duration
func (b *LeakyBucket) TimeToDrain() time.Duration
The duration until this bucket is completely drained
type LeakyBucketSer struct { Size uint16 Fill float64 LeakInterval time.Duration // time.Duration for 1 unit of size to leak Lastupdate time.Time }
func (b *LeakyBucketSer) DeSerialise() *LeakyBucket
type Memory struct {
// contains filtered or unexported fields
}
func NewMemory() *Memory
func (m *Memory) GarbageCollect()
func (m *Memory) GetBucketFor(key string) (*LeakyBucket, error)
func (m *Memory) SetBucketFor(key string, bucket LeakyBucket) error
type Storage interface { GetBucketFor(string) (*LeakyBucket, error) SetBucketFor(string, LeakyBucket) error }


|
Awesome Portable Rendering Interface Library
This library provides a universal rendering API and does not require to write code that is used in only one API (e.g. OpenGL, DirectX, SDL, ...)
|
Defines the available capabilities of the render system. More...
#include <RenderSystem.h>
Public Member Functions | |
| Caps () | |
| Basic constructor. | |
Public Attributes | |
| int | maxTextureSize |
| The maximum supported texture size. | |
| bool | npotTexturesLimited |
| Whether the "limited" implementation of non-power-of-two textures is supported. | |
| bool | npotTextures |
| Whether the full implementation of non-power-of-two textures is supported. | |
| harray< Image::Format > | textureFormats |
| Supported texture pixel formats. | |
| bool | renderTarget |
| Whether render targets are supported properly. Also. More... | |
Defines the available capabilities of the render system.
| bool april::RenderSystem::Caps::renderTarget |
Whether render targets are supported properly. Also.


It looks like I have managed to get emoncms reading correctly using 1 emontx for grid with AC AC adaptor (emontx123voltage) and 1 emontx for solar (emontx123).
I cant work our how to get the emonglcd to look at both emontx's and then tell it to use the correct feed? I am using the solarPV firmware as a starting point?
Re: Using 2 emontx with emonglcd for solar pv
You need to look at the part of the code where having received the RFM12B message, it is decoded. You must duplicate that, i.e. you need two "if (node_id == emonTx_nodeID) { .... } using the two node IDs for your two emonTx's. That will give you two sets of data, one from each emonTx, which you can then use however you wish.
(The best way to get the data is to have two PayloadTX's, emontx1 & emontx2).
I can go into more detail if you can't figure it out from there.
Re: Using 2 emontx with emonglcd for solar pv
Cheers Robert, new it would be something like that.
Could you elaborate on the payloadtx bit? i am very new arduino so am still working it all out.
Re: Using 2 emontx with emonglcd for solar pv
PayloadTX is a structure. It behaves in some respects like an int or a float, so having defined the structure, you create an instance of it:
PayloadTx emontx;
that's syntactically identical to writing
double realPower;
Hence you can have as many as you like (two is enough!) with
PayloadTx emontx1, emontx2;
The struct is nothing more than a container. You access the individual parts like:
emontx1.realPower = something;
emontx2.realPower = something_different;
Re: Using 2 emontx with emonglcd for solar pv
Cheers robert.
A fair amount of guess work but i got it right first time...
Just need to sort the time and base error now.
Re: Using 2 emontx with emonglcd for solar pv
Hi Ian,
Just composed an email to you before I read that you've got it figured. Good work. Anyway for what it's worth here's what I wrote:
Hi Ian,
Great to hear that you have got the units running and have figured out the firmware upload process.
I would highly recommend you run both emonTx's with an AC adapter and emonTx CT123 Voltage firmware as the solar inverter will have a less than unit power factor which will cause an emonTx without AC adapter measuring apparent power to over read.
What you need to do is to set the Node ID's on the two emonTx's to be different. The default node ID on the emonTx is 10. Both of your emonTx's are set to node 10. You need to set one to be different, let's go for 9 as we recomend the following nomenclature for node ID's
:
-ID- -Node Type-
0 - Special allocation in JeeLib RFM12 driver - reserved for OOK use
1-4 - Control nodes
5-10 - Energy monitoring nodes
11-14 --Un-assigned --
15-16 - Base Station & logging nodes
17-30 - Environmental sensing nodes (temperature humidity etc.)
31 - Special allocation in JeeLib RFM12 driver - Node31 can communicate with nodes on any network group
To do this open the emonTx CT_123_voltage firmware and change the following on line 48
const int nodeID = 9;
Now we need to tell the emonGLCD to treat data coming from CT1 on emonTx node 9 as solar PV generation and data from CT1 on emonTx Node ID 10 as grid/import export (assuming your system is solar PV type 2 as you suggested to me). Do do this edit emonGLCD solar PV sketch. We first need to create a new payload for the second emonTx, insert a line to detect an RF packet from the new emonTx and map it to emonTx9.powerX then replace all instances of emonTx.power2 (originally CT2 of emonTx with node ID 10) to emonTx9.power1 (coming from CT1 of emonTx node ID 9).
New structure :
typedef struct { int power1, power2, power3, Vrms; } PayloadTX9; // neat way of packaging data for RF comms
PayloadTX9 emontx9;
Detect packets from emonTx 9:
if (rf12_recvDone())
{
if (rf12_crc == 0 && (rf12_hdr & RF12_HDR_CTL) == 0) // and no rf errors
{
int node_id = (rf12_hdr & 0x1F);
if (node_id == 10) {emontx = *(PayloadTX*) rf12_data; last_emontx = millis();}
if (node_id == 9) {emontx9 = *(PayloadTX9*) rf12_data; last_emontx9 = millis();}
if (node_id == 15)
{
RTC.adjust(DateTime(2013, 1, 1, rf12_data[1], rf12_data[2], rf12_data[3]));
last_emonbase = millis();
}
}
}
replace all instances of emonTx.powe1 with emontx9.power2:
if (SolarPV_type==2){
usekwh += ((emontx.power1 + emontx9.power1) * 0.2) / 3600000;
genkwh += (emontx9.power1 * 0.2) / 3600000;
}
See attached for changes implemented in emonGLCD sketch.
Maybe sure you are using the latest emonTx_CT123_voltage code from github. I updated the calibration a couple of days ago when testing your units.
Best of luck,
Re: Using 2 emontx with emonglcd for solar pv
What happens if the two RF messages appear at the same time?
Or is the chances of this happening minimal?


Module Stage
The Stage
class represents the top of the scene tree hierarchy.
The instances of Stage
is not created directly (there is not any Stage.new
function) but
there is already a global variable stage
.
Type Stage
| Stage:addChild(child) |
Adds a sprite as a child to this sprite. |
| Stage:addChildAt(child, index) |
Adds a sprite as a child to this sprite. |
| Stage:addEventListener(listener, data) |
Registers a listener function and an optional data value so that the listener function is called when an event of a particular type occurs. |
| Stage:clearBlendMode() |
Clears the blending mode. |
| Stage:contains(child) |
Determines whether the specified sprite is contained in the subtree of
this |
| Stage:dispatchEvent(event) |
Dispatches an event to this |
| Stage:get() |
Returns the specified property of this sprite instance by its name. |
| Stage:getAlpha() |
Returns the alpha transparency of this sprite. |
| Stage:getBackgroundColor() |
This function is obsolete, use Application:getBackgroundColor instead. Returns the r, g, b values of background color. |
| Stage:getChildAt(index) |
Returns the child |
| Stage:getChildIndex(child) |
Returns the index of the specified child sprite. |
| Stage:getColorTransform() |
Returns the red, green, blue and alpha channel multipliers. |
| Stage:getHeight() |
Returns the height of the sprite, in pixels. |
| Stage:getMatrix() |
Returns the transformation matrix of the sprite. |
| Stage:getNumChildren() |
Returns the number of children of this sprite. |
| Stage:getOrientation() |
This function is obsolete, use Application:getOrientation instead. Returns the orientation of the stage. |
| Stage:getParent() |
Returns the |
| Stage:getPosition() |
Returns the x and y coordinates of the sprite. |
| Stage:getRotation() |
Returns the rotation of the sprite in degrees. |
| Stage:getScale() |
Returns the horizontal and vertical scales of the sprite. |
| Stage:getScaleX() |
Returns the horizontal scale of the sprite. |
| Stage:getScaleY() |
Returns the vertical scale of the sprite. |
| Stage:getWidth() |
Returns the width of the sprite, in pixels. |
| Stage:getX() |
Returns the x coordinate of the sprite. |
| Stage:getY() |
Returns the y coordinate of the sprite. |
| Stage:globalToLocal(x, y) |
Converts the x,y coordinates from the global to the sprite's (local) coordinates. |
| Stage:hasEventListener() |
Checks if the |
| Stage:hitTestPoint(x, y) |
Checks whether the given coordinates (in global coordinate system) is in bounds of the sprite. |
| Stage:isVisible() |
Returns whether or not the sprite is visible. |
| Stage:localToGlobal(x, y) |
Converts the x,y coordinates from the sprites's (local) coordinates to the global coordinates. |
| Stage:removeChild(child) |
Removes the specified child |
| Stage:removeChildAt(index) |
Removes the child |
| Stage:removeEventListener(listener, data) |
Removes a listener from the |
| Stage:removeFromParent() |
If the sprite has a parent, removes the sprite from the child list of its parent sprite. |
| Stage:set(value) |
Sets the specified property of this sprite instance by its name. |
| Stage:setAlpha(alpha) |
Sets the alpha transparency of this sprite. |
| Stage:setBackgroundColor(r, g, b) |
This function is obsolete, use Application:setBackgroundColor instead. Sets the background color (or clear color) of the application. |
| Stage:setBlendMode(blendMode) |
Sets the blend mode of the sprite. |
| Stage:setColorTransform(redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier) |
Sets the red, green, blue and alpha channel multipliers. |
| Stage:setMatrix(matrix) |
Sets the transformation matrix of the sprite. |
| Stage:setOrientation(orientation) |
This function is obsolete, use Application:setOrientation instead.
|
| Stage:setPosition(x, y) |
Sets the x and y coordinates of the sprite. |
| Stage:setRotation(rotation) |
Sets the rotation of the sprite in degrees. |
| Stage:setScale(scaleX, scaleY) |
Sets the horizontal and vertical scales of the sprite. |
| Stage:setScaleX(scaleX) |
Sets the horizontal scale of the sprite. |
| Stage:setScaleY(scaleY) |
Sets the vertical scale of the sprite. |
| Stage:setVisible(visible) |
Sets whether or not the sprite is visible. |
| Stage:setX(x) |
Sets the x coordinate of the sprite |
| Stage:setY(y) |
Sets the y coordinate of the sprite. |
Type Stage
Field(s)
- Stage:addChild(child)
-
Adds a sprite as a child to this sprite.
The child is added as a last child of this
Sprite
instance.Sprites can have only one parent. Therefore if you add a child object that already has a different sprite as a parent, the sprite is removed from the child list of the other sprite and then added to this sprite.
Parameter
-
child
: (Sprite) The child sprite to add.
-
- Stage:addChildAt(child, index)
-
Adds a sprite as a child to this sprite.
The child is added at the index position specified. Indices start from 1.
Sprites can have only one parent. Therefore if you add a child object that already has a different sprite as a parent, the sprite is removed from the child list of the other sprite and then added to this sprite.
Parameters
-
child
: (Sprite) The child sprite to add. -
index
: (number) The index position to which the child is added.
-
- Stage:addEventListener(listener, data)
-
Registers a listener function and an optional data value so that the listener function is called when an event of a particular type occurs.
Parameters
-
listener
: (function) The listener function that processes the event. -
data
: (optional) An optional data parameter that is passed as a first argument to the listener function.
-
- Stage:clearBlendMode()
-
Clears the blending mode.
- Stage:contains(child)
-
Determines whether the specified sprite is contained in the subtree of this
Sprite
instance.Parameter
-
child
: (Sprite) The child object to test.
Return value
true
if the child object is contained in the subtree of thisSprite
instance, otherwisefalse
. -
- Stage:dispatchEvent(event)
-
Dispatches an event to this
EventDispatcher
instance.Parameter
-
event
: (Event) TheEvent
object to be dispatched.
-
- Stage:get()
-
Returns the specified property of this sprite instance by its name.
These names are supported:
"x"
"y"
"rotation"
"scaleX"
"scaleY"
"alpha"
"redMultiplier"
"greenMultiplier"
"blueMultiplier"
"alphaMultiplier"
Return value
The value of the parameter
- Stage:getAlpha()
-
Returns the alpha transparency of this sprite.
0 means fully transparent and 1 means fully opaque.
Return value
The alpha of the sprite
- Stage:getBackgroundColor()
-
This function is obsolete, use Application:getBackgroundColor instead.
Returns the r, g, b values of background color.
Return value
The r, g, b values of background color.
- Stage:getChildAt(index)
-
Returns the child
Sprite
instance that exists at the specified index.First child is at index 1.
Parameter
-
index
: (number) The index position of the child object.
Return value
The child sprite at the specified index position.
-
- Stage:getChildIndex(child)
-
Returns the index of the specified child sprite.
Parameter
-
child
: (Sprite) The child sprite to identify.
Return value
The index of the specified child sprite.
-
- Stage:getColorTransform()
-
Returns the red, green, blue and alpha channel multipliers.
Return value
4 values: redMultiplier, greenMultiplier, blueMultiplier and alphaMultiplier
- Stage:getHeight()
-
Returns the height of the sprite, in pixels.
The height is calculated based on the bounds of the content of the sprite.
Return value
Height of the sprite.
- Stage:getMatrix()
-
Returns the transformation matrix of the sprite.
Each invocation of this function returns a new
Matrix
object.Return value
The transformation matrix of the sprite
- Stage:getNumChildren()
-
Returns the number of children of this sprite.
Return value
The number of children of this sprite.
- Stage:getOrientation()
-
This function is obsolete, use Application:getOrientation instead.
Returns the orientation of the stage.
Return value
The orientation of the stage
- Stage:getParent()
-
Returns the
Sprite
object that contains thisSprite
object.Return value
The parent sprite.
- Stage:getPosition()
-
Returns the x and y coordinates of the sprite.
Return value
The x and y coordinates of the sprite
- Stage:getRotation()
-
Returns the rotation of the sprite in degrees.
Return value
Rotation of the sprite.
- Stage:getScale()
-
Returns the horizontal and vertical scales of the sprite.
Return value
The horizontal and vertical scales of the sprite
- Stage:getScaleX()
-
Returns the horizontal scale of the sprite.
Return value
The horizontal scale (percentage) of the sprite.
- Stage:getScaleY()
-
Returns the vertical scale of the sprite.
Return value
The vertical scale of the object.
- Stage:getWidth()
-
Returns the width of the sprite, in pixels.
The width is calculated based on the bounds of the content of the sprite.
Return value
Width of the sprite.
- Stage:getX()
-
Returns the x coordinate of the sprite.
Return value
The x coordinate of the sprite
- Stage:getY()
-
Returns the y coordinate of the sprite.
Return value
The y coordinate of the sprite
- Stage:globalToLocal(x, y)
-
Converts the x,y coordinates from the global to the sprite's (local) coordinates.
Parameters
-
x
: (number) x coordinate of the global coordinate. -
y
: (number) y coordinate of the global coordinate.
Return values
-
x coordinate relative to the display object.
-
y coordinate relative to the display object.
-
- Stage:hasEventListener()
-
Checks if the
EventDispatcher
object has a event listener registered for the specified type of event.Return value
A value of
true
if a listener of the specified type is registered;false
otherwise.
- Stage:hitTestPoint(x, y)
-
Checks whether the given coordinates (in global coordinate system) is in bounds of the sprite.
Parameters
-
x
: (number) -
y
: (number)
Return value
true
if the given global coordinates are in bounds of the sprite,false
otherwise. -
- Stage:isVisible()
-
Returns whether or not the sprite is visible.
Child sprites that are not visible are also taken into consideration while calculating bounds.
Return value
A value of
true
if sprite is visible;false
otherwise.
- Stage:localToGlobal(x, y)
-
Converts the x,y coordinates from the sprites's (local) coordinates to the global coordinates.
Parameters
-
x
: (number) x coordinate of the local coordinate. -
y
: (number) y coordinate of the local coordinate.
Return values
-
x coordinate relative to the display area.
-
y coordinate relative to the display area.
-
- Stage:removeChild(child)
-
Removes the specified child
Sprite
instance from the child list of thisSprite
instance.Parameter
-
child
: (Sprite) The child sprite to remove.
-
- Stage:removeChildAt(index)
-
Removes the child
Sprite
instance at the specifed index.Index of the first child is 1 and index of the last child can be get from
Sprite:getNumChildren
function.Parameter
-
index
: (number) The child index of the sprite to remove.
-
- Stage:removeEventListener(listener, data)
-
Removes a listener from the
EventDispatcher
object.removeEventListener()
function expects the same arguments withaddEventListener()
to remove the event. If there is no matching listener registered, a call to this function has no effect.Parameters
-
listener
: (function) The listener object to remove. -
data
: The data parameter that is used while registering the event.
-
- Stage:removeFromParent()
-
If the sprite has a parent, removes the sprite from the child list of its parent sprite.
This function is equilavent to:
function Sprite:removeFromParent() local parent = self:getParent() if parent ~= nil then parent:removeChild(self) end end
- Stage:set(value)
-
Sets the specified property of this sprite instance by its name.
These names are supported:
"x"
"y"
"rotation"
"scaleX"
"scaleY"
"scale"
"alpha"
"redMultiplier"
"greenMultiplier"
"blueMultiplier"
"alphaMultiplier"
Parameter
-
value
: (number) The new value of the specified parameter
- Stage:setAlpha(alpha)
-
Sets the alpha transparency of this sprite.
0 means fully transparent and 1 means fully opaque.
Parameter
-
alpha
: (number) The new alpha transparency of the sprite
-
- Stage:setBackgroundColor(r, g, b)
-
This function is obsolete, use Application:setBackgroundColor instead.
Sets the background color (or clear color) of the application.
Default background color is white (1, 1, 1).
Parameters
-
r
: (number) red component of background color -
g
: (number) green component of background color -
b
: (number) blue component of background color
-
- Stage:setBlendMode(blendMode)
-
Sets the blend mode of the sprite.
Currently supported blending modes are:
- Sprite.ALPHA = "alpha"
- Sprite.NO_ALPHA = "noAlpha"
- Sprite.ADD = "add"
- Sprite.MULTIPLY = "multiply"
- Sprite.SCREEN = "screen"
If a
Sprite
object doesn't set any blending mode, it takes the blending mode from its parent sprite.Note: The following two lines are completely same:
sprite:setBlendMode("add") sprite:setBlendMode(Sprite.ADD)
It's a matter of taste which one to choose.
Parameter
-
blendMode
: (String)
- Stage:setColorTransform(redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier)
-
Sets the red, green, blue and alpha channel multipliers.
This function lets you adjust the color multipliers of a display object. This adjustment also applies to the children of this sprite instance.
Parameters
-
redMultiplier
: (number, default = 1) The red multiplier of this sprite -
greenMultiplier
: (number, default = 1) The green multiplier of this sprite -
blueMultiplier
: (number, default = 1) The blue multiplier of this sprite -
alphaMultiplier
: (number, default = 1) The alpha multiplier of this sprite
-
- Stage:setMatrix(matrix)
-
Sets the transformation matrix of the sprite.
Parameter
-
matrix
: (Matrix)
-
- Stage:setOrientation(orientation)
-
This function is obsolete, use Application:setOrientation instead.
- Stage.PORTRAIT = "portrait"
- Stage.PORTRAITUPSIDEDOWN = "portraitUpsideDown"
- Stage.LANDSCAPE_LEFT = "landscapeLeft"
- Stage.LANDSCAPE_RIGHT = "landscapeRight"
Parameter
-
orientation
: (string)
- Stage:setPosition(x, y)
-
Sets the x and y coordinates of the sprite.
Parameters
-
x
: (number) The new x coordinate of the sprite -
y
: (number) The new y coordinate of the sprite
-
- Stage:setRotation(rotation)
-
Sets the rotation of the sprite in degrees.
Parameter
-
rotation
: (number) rotation of the sprite
-
- Stage:setScale(scaleX, scaleY)
-
Sets the horizontal and vertical scales of the sprite.
Parameters
-
scaleX
: (number) horizontal scale (percentage) of the object -
scaleY
: (number, default = scaleX) vertical scale (percentage) of the object
-
- Stage:setScaleX(scaleX)
-
Sets the horizontal scale of the sprite.
Parameter
-
scaleX
: (number) horizontal scale of the sprite
-
- Stage:setScaleY(scaleY)
-
Sets the vertical scale of the sprite.
Parameter
-
scaleY
: (number) vertical scale (percentage) of the object
-
- Stage:setVisible(visible)
-
Sets whether or not the sprite is visible.
Sprites that are not visible are also taken into consideration while calculating bounds.
Parameter
-
visible
: (bool) whether or not the sprite is visible
-
- Stage:setX(x)
-
Sets the x coordinate of the sprite
Parameter
-
x
: (number) The new x coordinate of the sprite
-
- Stage:setY(y)
-
Sets the y coordinate of the sprite.
Parameter
-
y
: (number) The new y coordinate of the sprite
-


Process
You can paste in the process description given to students in process.htm and then interleave the additional details that a teacher might need.
Describe briefly how the lesson is organized. Does it involve more than one class? Is it all taught in one period per day, or is it part of several periods? How many days or weeks will it take? Is it single disciplinary, interdisciplinary, multidisciplinary or what?
If students are divided into groups, provide guidelines on how you might do that.
If there are misconceptions or stumbling blocks that you anticipate, describe them here and suggest ways to get around them.
What skills does a teacher need in order to pull this lesson off? Is it easy enough for a novice teacher? Does it require some experience with directing debates or role plays, for example?
If you're designing for a one-computer classroom or for pre-readers and are creating a facilitated WebQuest in which the teacher or an aide controls the computer and guides discussion, you can link from here to the Teacher Script page (t-script.htm) which would contain a printable script for the facilitator to follow.
Variations
If you can think of ways to vary the way the lesson might be carried out in different situations (lab vs. in-class, for example), describe them here.


Why RAKsmart
-
One-Stop Service
ICT Solution, Site Selection, Hardware Procurement, Connectivity, Deployment, Maintenance and Support -
Attractive Margins
Attractive Reseller Programs for 1Tbps+Asia-Optimized IP Transit, Leased Line, SD-WAN, and Data Center Resources -
Around The Clock Support
24x7 Support, 13 Years + Experience -
Customized Solutions
Tailored Made Solutions Based on Leading Hardware Platforms, Hosted in Tier 3 Data Centers in Global Internet Hubs -
Secure
Fast, Secure Connectivity Between Any Public, Private, Bare-Metal Clouds Anywhere -
DDoS Mitigation
1Tbps+ DDoS Mitigation Service
Working with RAKsmart
As a reseller or promoter of RAKsmart, you'll benefit from RAKsmart, and you can expand your products and services through RAKsmart's reseller program, while you can take advantage of your network to provide a big boost to the referral and get more out of it.
contact usTiered Reseller Program
Attractive Reseller Programs for 1Tbps+Asia-Optimized IP Transit, Leased Line, SD-WAN, and Data Center Resources
| {if condition="$reseller"} {volist name="reseller" id="vo"} | {$vo.r_type|default=""} | {/volist} {/if}
|---|---|
| Recharge amount/time | {if condition="$reseller"} {volist name="reseller" id="vo"}{$vo.r_money|default=""} | {/volist} {/if}
| Discount | {if condition="$reseller"} {volist name="reseller" id="vo"}{$vo.r_zhe|default=""}{if condition="$vo['r_zhe']"}%{/if} | {/volist} {/if}
| Resource allocation | {if condition="$reseller"} {volist name="reseller" id="vo"}{$vo.r_resource|default=""} | {/volist} {/if}
| Technical support | {if condition="$reseller"} {volist name="reseller" id="vo"}{$vo.r_zc|default=""} | {/volist} {/if}
| Reformat servers | {if condition="$reseller"} {volist name="reseller" id="vo"}{$vo.r_server|default=""} | {/volist} {/if}


|
NANO100_BSP V3.04.001
The Board Support Package for Nano100BN Series
|
Macros | |
| #define | PWM_ENABLE_OUTPUT_INVERTER(pwm, u32ChannelMask) |
| This macro enable output inverter of specified channel(s) More... | |
| #define | PWM_GET_CAPTURE_RISING_DATA(pwm, u32ChannelNum) |
| This macro get captured rising data. More... | |
| #define | PWM_GET_CAPTURE_FALLING_DATA(pwm, u32ChannelNum) |
| This macro get captured falling data. More... | |
| #define | PWM_SET_PRESCALER(pwm, u32ChannelNum, u32Prescaler) |
| This macro set the prescaler of the selected channel. More... | |
| #define | PWM_SET_DIVIDER(pwm, u32ChannelNum, u32Divider) |
| This macro set the divider of the selected channel. More... | |
| #define | PWM_SET_CMR(pwm, u32ChannelNum, u32CMR) |
| This macro set the duty of the selected channel. More... | |
| #define | PWM_SET_CNR(pwm, u32ChannelNum, u32CNR) |
| This macro set the period of the selected channel. More... | |
Functions | |
| uint32_t | PWM_ConfigOutputChannel (PWM_T *pwm, uint32_t u32ChannelNum, uint32_t u32Frequency, uint32_t u32DutyCycle) |
| This function config PWM generator and get the nearest frequency in edge aligned auto-reload mode. More... | |
| uint32_t | PWM_ConfigCaptureChannel (PWM_T *pwm, uint32_t u32ChannelNum, uint32_t u32UnitTimeNsec, uint32_t u32CaptureEdge) |
| This function config PWM capture and get the nearest unit time. More... | |
| void | PWM_Start (PWM_T *pwm, uint32_t u32ChannelMask) |
| This function start PWM module. More... | |
| void | PWM_Stop (PWM_T *pwm, uint32_t u32ChannelMask) |
| This function stop PWM module. More... | |
| void | PWM_ForceStop (PWM_T *pwm, uint32_t u32ChannelMask) |
| This function stop PWM generation immediately by clear channel enable bit. More... | |
| void | PWM_EnableCapture (PWM_T *pwm, uint32_t u32ChannelMask) |
| This function enables PWM capture of selected channels. More... | |
| void | PWM_DisableCapture (PWM_T *pwm, uint32_t u32ChannelMask) |
| This function disables PWM capture of selected channels. More... | |
| void | PWM_EnableOutput (PWM_T *pwm, uint32_t u32ChannelMask) |
| This function enables PWM output generation of selected channels. More... | |
| void | PWM_DisableOutput (PWM_T *pwm, uint32_t u32ChannelMask) |
| This function disables PWM output generation of selected channels. More... | |
| void | PWM_EnableDeadZone (PWM_T *pwm, uint32_t u32ChannelNum, uint32_t u32Duration) |
| This function enable Dead zone of selected channel. More... | |
| void | PWM_DisableDeadZone (PWM_T *pwm, uint32_t u32ChannelNum) |
| This function disable Dead zone of selected channel. More... | |
| void | PWM_EnableCaptureInt (PWM_T *pwm, uint32_t u32ChannelNum, uint32_t u32Edge) |
| This function enable capture interrupt of selected channel. More... | |
| void | PWM_DisableCaptureInt (PWM_T *pwm, uint32_t u32ChannelNum, uint32_t u32Edge) |
| This function disable capture interrupt of selected channel. More... | |
| void | PWM_ClearCaptureIntFlag (PWM_T *pwm, uint32_t u32ChannelNum, uint32_t u32Edge) |
| This function clear capture interrupt flag of selected channel. More... | |
| uint32_t | PWM_GetCaptureIntFlag (PWM_T *pwm, uint32_t u32ChannelNum) |
| This function get capture interrupt flag of selected channel. More... | |
| void | PWM_EnablePeriodInt (PWM_T *pwm, uint32_t u32ChannelNum, uint32_t u32IntPeriodType) |
| This function enable period interrupt of selected channel. More... | |
| void | PWM_DisablePeriodInt (PWM_T *pwm, uint32_t u32ChannelNum) |
| This function disable period interrupt of selected channel. More... | |
| void | PWM_ClearPeriodIntFlag (PWM_T *pwm, uint32_t u32ChannelNum) |
| This function clear period interrupt of selected channel. More... | |
| uint32_t | PWM_GetPeriodIntFlag (PWM_T *pwm, uint32_t u32ChannelNum) |
| This function get period interrupt of selected channel. More... | |
| void | PWM_EnablePDMA (PWM_T *pwm, uint32_t u32ChannelNum, uint32_t u32RisingFirst, uint32_t u32Mode) |
| This function enable capture PDMA of selected channel. More... | |
| void | PWM_DisablePDMA (PWM_T *pwm, uint32_t u32ChannelNum) |
| This function disable capture PDMA of selected channel. More... | |
| #define PWM_ENABLE_OUTPUT_INVERTER | ( | pwm, | |
| u32ChannelMask | |||
| ) |
| #define PWM_GET_CAPTURE_FALLING_DATA | ( | pwm, | |
| u32ChannelNum | |||
| ) |
| #define PWM_GET_CAPTURE_RISING_DATA | ( | pwm, | |
| u32ChannelNum | |||
| ) |
| #define PWM_SET_CMR | ( | pwm, | |
| u32ChannelNum, | |||
| u32CMR | |||
| ) |
This macro set the duty of the selected channel.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelNum | PWM channel number. Valid values are between 0~5 |
| [in] | u32CMR | Duty of specified channel. Valid values are between 0~0xFFFF |
| #define PWM_SET_CNR | ( | pwm, | |
| u32ChannelNum, | |||
| u32CNR | |||
| ) |
This macro set the period of the selected channel.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelNum | PWM channel number. Valid values are between 0~5 |
| [in] | u32CNR | Period of specified channel. Valid values are between 0~0xFFFF |
| #define PWM_SET_DIVIDER | ( | pwm, | |
| u32ChannelNum, | |||
| u32Divider | |||
| ) |
This macro set the divider of the selected channel.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelNum | PWM channel number. Valid values are between 0~5 |
| [in] | u32Divider | Clock divider of specified channel. Valid values are |
| #define PWM_SET_PRESCALER | ( | pwm, | |
| u32ChannelNum, | |||
| u32Prescaler | |||
| ) |
This macro set the prescaler of the selected channel.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelNum | PWM channel number. Valid values are between 0~5 |
| [in] | u32Prescaler | Clock prescaler of specified channel. Valid values are between 1 ~ 0xFF |
| void PWM_ClearCaptureIntFlag | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelNum, | ||
| uint32_t | u32Edge | ||
| ) |
This function clear capture interrupt flag of selected channel.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelNum | PWM channel number. Valid values are between 0~5 |
| [in] | u32Edge | Capture interrupt type. It could be either |
| void PWM_ClearPeriodIntFlag | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelNum | ||
| ) |
| uint32_t PWM_ConfigCaptureChannel | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelNum, | ||
| uint32_t | u32UnitTimeNsec, | ||
| uint32_t | u32CaptureEdge | ||
| ) |
This function config PWM capture and get the nearest unit time.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelNum | PWM channel number. Valid values are between 0~5 |
| [in] | u32UnitTimeNsec | Unit time of counter |
| [in] | u32CaptureEdge | Condition to latch the counter |
| uint32_t PWM_ConfigOutputChannel | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelNum, | ||
| uint32_t | u32Frequency, | ||
| uint32_t | u32DutyCycle | ||
| ) |
This function config PWM generator and get the nearest frequency in edge aligned auto-reload mode.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelNum | PWM channel number. Valid values are between 0~5 |
| [in] | u32Frequency | Target generator frequency |
| [in] | u32DutyCycle | Target generator duty cycle percentage. Valid range are between 0 ~ 100. 10 means 10%, 20 means 20%... |
Definition at line 37 of file pwm.c.
| void PWM_DisableCapture | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelMask | ||
| ) |
This function disables PWM capture of selected channels.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelMask | Combination of enabled channels. Each bit corresponds to a channel. Set bit 0 to 1 enables channel 0 output, set bit 1 to 1 enables channel 1 output... |
| void PWM_DisableCaptureInt | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelNum, | ||
| uint32_t | u32Edge | ||
| ) |
This function disable capture interrupt of selected channel.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelNum | PWM channel number. Valid values are between 0~5 |
| [in] | u32Edge | Capture interrupt type. It could be either |
| void PWM_DisableDeadZone | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelNum | ||
| ) |
| void PWM_DisableOutput | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelMask | ||
| ) |
This function disables PWM output generation of selected channels.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelMask | Combination of enabled channels. Each bit corresponds to a channel Set bit 0 to 1 disables channel 0 output, set bit 1 to 1 disables channel 1 output... |
Definition at line 346 of file pwm.c.
| void PWM_DisablePDMA | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelNum | ||
| ) |
| void PWM_DisablePeriodInt | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelNum | ||
| ) |
| void PWM_EnableCapture | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelMask | ||
| ) |
This function enables PWM capture of selected channels.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelMask | Combination of enabled channels. Each bit corresponds to a channel. Set bit 0 to 1 enables channel 0 output, set bit 1 to 1 enables channel 1 output... |
Definition at line 285 of file pwm.c.
| void PWM_EnableCaptureInt | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelNum, | ||
| uint32_t | u32Edge | ||
| ) |
This function enable capture interrupt of selected channel.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelNum | PWM channel number. Valid values are between 0~5 |
| [in] | u32Edge | Capture interrupt type. It could be either |
Definition at line 393 of file pwm.c.
| void PWM_EnableDeadZone | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelNum, | ||
| uint32_t | u32Duration | ||
| ) |
This function enable Dead zone of selected channel.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelNum | PWM channel number. Valid values are between 0~5 |
| [in] | u32Duration | Dead Zone length in PWM clock count, valid values are between 0~0xFF, but 0 means there is no dead zone. |
| void PWM_EnableOutput | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelMask | ||
| ) |
This function enables PWM output generation of selected channels.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelMask | Combination of enabled channels. Each bit corresponds to a channel. Set bit 0 to 1 enables channel 0 output, set bit 1 to 1 enables channel 1 output... |
Definition at line 334 of file pwm.c.
| void PWM_EnablePDMA | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelNum, | ||
| uint32_t | u32RisingFirst, | ||
| uint32_t | u32Mode | ||
| ) |
This function enable capture PDMA of selected channel.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelNum | PWM channel number. Valid values are 0 and 2 |
| [in] | u32RisingFirst | Order of captured data transferred by PDMA. It could be either |
| [in] | u32Mode | Captured data transferred by PDMA interrupt type. It could be either |
| void PWM_EnablePeriodInt | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelNum, | ||
| uint32_t | u32IntPeriodType | ||
| ) |
This function enable period interrupt of selected channel.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelNum | PWM channel number. Valid values are between 0~5 |
| [in] | u32IntPeriodType | This parameter is not used |
| void PWM_ForceStop | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelMask | ||
| ) |
This function stop PWM generation immediately by clear channel enable bit.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelMask | Combination of enabled channels. Each bit corresponds to a channel. Bit 0 is channel 0, bit 1 is channel 1... |
| uint32_t PWM_GetCaptureIntFlag | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelNum | ||
| ) |
This function get capture interrupt flag of selected channel.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelNum | PWM channel number. Valid values are between 0~5 |
| 0 | Capture interrupt did not occurred |
| PWM_RISING_LATCH_INT_FLAG | Rising edge latch interrupt occurred |
| PWM_FALLING_LATCH_INT_FLAG | Falling edge latch interrupt occurred |
| PWM_RISING_FALLING_LATCH_INT_FLAG | Rising and falling edge latch interrupt occurred |
| uint32_t PWM_GetPeriodIntFlag | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelNum | ||
| ) |
This function get period interrupt of selected channel.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelNum | PWM channel number. Valid values are between 0~5 |
| 0 | Period interrupt did not occurred |
| 1 | Period interrupt occurred |
| void PWM_Start | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelMask | ||
| ) |
This function start PWM module.
| [in] | pwm | The base address of PWM module |
| [in] | u32ChannelMask | Combination of enabled channels. Each bit corresponds to a channel. Bit 0 is channel 0, bit 1 is channel 1... |
Definition at line 227 of file pwm.c.
| void PWM_Stop | ( | PWM_T * | pwm, |
| uint32_t | u32ChannelMask | ||
| ) |


{{ filename }} ( {{ current }} / {{ total }} )
Cleaness
clean
dirty
Gender
male
female
nogender
What
person
people
object
negaposi
positive
negative
neutral
SUBMIT
SKIP


The Gathering Storm
The Gathering Storm is a TV movie starring Albert Finney, Vanessa Redgrave, and Jim Broadbent. Winston Churchill's wilderness years prior to World War II, when only he could see the threat that Adolf Hitler and a rearmed Germany...


{% extends "base.html" %} {% block navbar %}
{% endblock %} {% block content %}|
Live Encoder Transcoder Specification |
||||
| ¡¡ | ||||
| Input | ||||
| Input Type | SDI, HDMI,Redundant IP inputs | |||
| Protocol | MPEG-2 TS up to 60Mbps over IP H.264 TS up to 30Mbps over IP |
|||
| Codecs | Video: MPEG-2 SD/HD/UHD, MPEG-4
SD/HD/UHD Audio: MPEG-1 Layer II, AC3, E-AC3, AAC, HE AAC |
|||
| Video Encoding | ||||
| Video Codec | HEVC Main profile | |||
| Data Rate | Up to 20Mbps | |||
| Rate Control | CBR/VBR/ABR with GOP alignment for adaptive bitrate formats | |||
| Resolutions | Up to 4Kp | |||
| Multistream Output | ABR | |||
| Audio Encoding | ¡¡ | |||
| Audio Channels | Up to 2 stereo pairs | |||
| Audio Encoding | MPEG-1 Layer II, AC3, E-AC3, AAC, HE AAC | |||
| Pass-Through | MPEG-1 Layer II, AC3, E-AC3, AAC, HE AAC | |||
| Data Rate | Up to 512kbps | |||
| Monitoring and Control | ||||
| Control Interface | One 100Mbps IP control port | |||
| Control Protocols | SNMP V2 | |||
| Scalability | Support scaling from a single-server to hundreds of servers | |||
| High Availability | Automated load balancing, fault-tolerance and failover | |||
| Output | ||||
| Output Type | Redundant IP outputs | ¡¡ | ||
| Protocol | TS | |||
| Hardware Platform | ||||
| Hardware Spec | Intel based, 1 RU | |||
| Performance | ||||
| HEVC: 4K 60fps | 1~2 stream(s) | |||
| HEVC: 4K 30fps | 2~4 streams | |||
| HEVC: 1080P 30fps | 8~16 streams | |||


--- layout: archive title: Zulip Chat Archive permalink: /stream/187764-Lean-for-teaching/topic/Patrick's.20course.html ---
Patrick -- your course is done now, right? This https://www.math.u-psud.fr/~pmassot/enseignement/math114/ is the link I know about -- is there anything else you have to show off? How did it go?
My French is not so good, so I asked google for some help, and very much liked its translation: "This course uses the Lean Demonstration Wizard".
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


--- layout: default title: SNSM'17 - International Conference on Social Networks and Social Media meta: A conference about social networks and social media. Great opportunity to network and gain more knowledge! keyword: computer science conference, multimedia conference, human computer interaction conference, information technology conference, information system conference, ergonomics conference, human factors conference, cybernetics conference, computer science, multimedia, human computer interaction, information technology, information system, ergonomics, human factors, cybernetics ---
The International Conference on Social Networks and Social Media (SNSM'17) aims to become the leading annual conference in fields related to social networks and social media. The goal of SNSM'17 is to gather scholars from all over the world to present advances in the relevant fields and to foster an environment conducive to exchanging ideas and information. This conference will also provide an ideal environment to develop new collaborations and meet experts on the fundamentals, applications, and products of the mentioned fields.
SNSM'17 is part of the 3rd World Congress on Electrical Engineering and Computer Systems and Science (EECSS'17). For more information about the congress, please visit the website here: www.2017.eecss.org.
SNSM is an acronym for Social Networks and Social Media.


Before Change
feature_dict = {"user": uid, "gender": ugender, "item": iid, "item_gender": igender,
"hist_item": hist_iid, "hist_item_gender": hist_igender, "score": score}
fixlen_feature_names = get_fixlen_feature_names(feature_columns)
varlen_feature_names = get_varlen_feature_names(feature_columns)
x = [feature_dict[name] for name in fixlen_feature_names] + [feature_dict[name] for name in varlen_feature_names]
y = [1, 0, 1]
return x, y, feature_columns, behavior_feature_list
After Change
feature_dict = {"user": uid, "gender": ugender, "item": iid, "item_gender": igender,
"hist_item": hist_iid, "hist_item_gender": hist_igender, "score": score}
x = {name:feature_dict[name] for name in get_feature_names(feature_columns)}
y = [1, 0, 1]
return x, y, feature_columns, behavior_feature_list


interface Doctrine\DBAL\Driver\ExceptionConverterDriver
Contract for a driver that is capable of converting DBAL driver exceptions into standardized DBAL driver exceptions.
Construction
Hierarchy
Constants
Properties
Methods
-
convertException ($message, $exception) : Doctrine\DBAL\Driver\
DriverException Converts a given DBAL driver exception into a standardized DBAL driver exception.
It evaluates the vendor specific error code and SQLSTATE and transforms
it into a unifiedDoctrine\DBAL\Driver\DriverException subclass.Parameters string $message The DBAL exception message to use.
Doctrine\DBAL\Driver\ DriverException $exception The DBAL driver exception to convert.
Return Doctrine\DBAL\Driver\ DriverException An instance of one of the DriverException subclasses.


{% extends 'projects/base.html' %} {% load static%} {% block content %}
A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth.
A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth.
A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth.


Source code for pyads.structs
"""
pyads.structs
-------------
Structs for the work with ADS API.
:copyright: 2013 by Stefan Lehmann
:license: MIT, see LICENSE for details
"""
from ctypes import *
[docs]class SAdsVersion(Structure):
_fields_=[("version", c_byte),
("revision", c_byte),
("build", c_short)]
[docs]class AdsVersion ():
"""
:summary: contains version number, revision number, build number of the ADS-DLL
:ivar int version: version number
:ivar int revision: revision number
:ivar int build: build number
"""
def __init__(self, stAdsVersion):
"""
:param pyads.constants.SAdsVersion stAdsVersion: ctypes structure with the version info
"""
self.version = stAdsVersion.version
self.revision = stAdsVersion.revision
self.build = stAdsVersion.build
[docs]class SAmsAddr(Structure):
"""
:summary: structure containing the netId and port of an ADS device
"""
_fields_ = [("netId", c_ubyte * 6),
("port", c_ushort)]
[docs]class AmsAddr():
"""
:summary: wrapper for SAmsAddr-structure, needed to adress an ADS device
:type stAmsAddr: SAmsAddr
:ivar stAmsAddr: ctypes-structure SAmsAddr
:type errCode: int
:ivar errCode: error code
"""
def __init__(self, errCode, stAmsAddr):
self.stAmsAddr = stAmsAddr
self.errCode = errCode
[docs] def toString(self):
"""
:summary: textual representation of the AMS adress
:rtype: string
:return: textual representation of the AMS adress
"""
tmpList = [str(self.stAmsAddr.netId[i]) for i in range(sizeof(self.stAmsAddr.netId))]
netId = ".".join(tmpList) + ": "+ str(self.stAmsAddr.port)
return netId
[docs] def port(self):
"""
:summary: returns port number
"""
return int(self.stAmsAddr.port)
[docs] def setPort(self, value):
"""
:summary: sets port number
"""
self.stAmsAddr.port = c_ushort(value)
[docs] def amsAddrStruct(self):
"""
:summary: access to the c-types structure SAmsAddr
"""
return self.stAmsAddr
[docs] def setAdr(self, adrString):
"""
:summary: Sets the AMS-adress according to the given string containing the IP-adress
:type adrString: string
:param adrString: ip-adress of an ADS device
"""
a = adrString.split(".")
if not len(a)==6:
return
for i in range(len(a)):
self.stAmsAddr.netId[i] = c_ubyte(int(a[i]))
[docs]class SAdsNotificationAttrib(Structure):
_fields_ = [("cbLength", c_ulong),
("nTransMode", c_ulong),
("nMaxDelay", c_ulong),
("nCycleTime", c_ulong)]
[docs]class SAdsSymbolUploadInfo(Structure):
_fields_ = [("nSymbols", c_ulong),
("nSymSize", c_ulong)]
[docs]class SAdsSymbolEntry(Structure):
_fields_ = [("entryLength", c_ulong),
("iGroup", c_ulong),
("iOffs", c_ulong),
("iSize", c_ulong),
("flags", c_ulong),
("nameLength", c_ushort),
("typeLength", c_ushort),
("commentLength", c_ushort)]


lmomco: L-Moments, Censored L-Moments, Trimmed L-Moments, L-Comoments,
and Many Distributions
Extensive functions for L-moments (LMs) and probability-weighted moments
(PWMs), parameter estimation for distributions, LM computation for distributions, and
L-moment ratio diagrams. Maximum likelihood and maximum product of spacings estimation
are also available. LMs for right-tail and left-tail censoring by known or unknown
threshold and by indicator variable are available. Asymmetric (asy) trimmed LMs
(TL-moments, TLMs) are supported. LMs of residual (resid) and reversed (rev) resid life
are implemented along with 13 quantile function operators for reliability and survival
analyses. Exact analytical bootstrap estimates of order statistics, LMs, and variances-
covariances of LMs are provided. The Harri-Coble Tau34-squared Normality Test is available.
Distribution support with "L" (LMs), "TL" (TLMs) and added (+) support for right-tail
censoring (RC) encompasses: Asy Exponential (Exp) Power [L], Asy Triangular [L],
Cauchy [TL], Eta-Mu [L], Exp. [L], Gamma [L], Generalized (Gen) Exp Poisson [L],
Gen Extreme Value [L], Gen Lambda [L,TL], Gen Logistic [L), Gen Normal [L],
Gen Pareto [L+RC, TL], Govindarajulu [L], Gumbel [L], Kappa [L], Kappa-Mu [L],
Kumaraswamy [L], Laplace [L], Linear Mean Resid. Quantile Function [L], Normal [L],
3-p log-Normal [L], Pearson Type III [L], Rayleigh [L], Rev-Gumbel [L+RC], Rice/Rician [L],
Slash [TL], 3-p Student t [L], Truncated Exponential [L], Wakeby [L], and Weibull [L].
Multivariate sample L-comoments (LCMs) are implemented to measure asymmetric associations.
Downloads:
Reverse dependencies:
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=lmomco
to link to this page.


Home Page
>
Creating a GUI With JFC/Swing
>
Using Swing Components
Solving Common Component Problems
This section discusses problems that you might encounter
while using components.
If you do not find your problem in this section,
consult
the following sections:
Problem:
I am having trouble implementing a model
(or some other code that is similar to something
already in Java SE Platform, Standard Edition).
- Look at the Java SE source code.
It is distributed with the JDK,
and it is a great resource for finding code examples
of implementing models, firing events, and the like.
Problem:
Whenever the text in my text field updates,
the text field's size changes.
- You should specify the preferred width
of the text field
by specifying the number of columns it should have room to display.
To do this, you can use either an
int
argument
to the JTextField
constructor
or the setColumns
method.
Problem:
Certain areas of the content pane look weird when they are repainted.
- If you set the content pane,
make sure it is opaque.
You can do this by invoking
setOpaque(true)
on your content pane.
Note that although JPanel
s are opaque in most look and feels,
that is not true in the GTK+ look and feel.
See Adding Components
to the Content Pane for details.
- If one or more of your components performs custom painting,
make sure you implemented it correctly.
See
Solving Common Painting Problems for help.
- You might have a thread safety problem.
See the next entry.
Problem:
My program is exhibiting weird symptoms
that sometimes seem to be related to timing.
Problem:
My modal dialog gets lost behind other windows.
- If the dialog has a null parent component,
try setting it to a valid frame or component when you create it.
- This bug was fixed in the 6.0 release. For more information, see
4255200.
Problem:
The scroll bar policies do not seem to be working as advertised.
- Some Swing releases contain bugs in the implementations for
the
VERTICAL_SCROLLBAR_AS_NEEDED
and the HORIZONTAL_SCROLLBAR_AS_NEEDED
policies.
If feasible for your project,
use the most recent release of Swing.
- If the scroll pane's client can change size dynamically,
the program should set the client's preferred size
and then call
revalidate
on the client.
- Make sure you specified the policy you intended
for the orientation you intended.
Problem:
My scroll pane has no scroll bars.
- If you want a scroll bar to appear all the time,
specify either
VERTICAL_SCROLLBAR_ALWAYS
or
HORIZONTAL_SCROLLBAR_ALWAYS
for the scroll bar
policy as appropriate.
- If you want the scroll bars to appear as needed,
and you want to force the scroll bars to be needed
when the scroll pane is created, you have two choices:
either set the preferred size of scroll pane or its container,
or implement a scroll-savvy class and return a value
smaller than the component's standard preferred size
from the
getPreferredScrollableViewportSize
method.
Refer to
Sizing a Scroll Pane
for information.
Problem:
The divider in my split pane does not move!
Problem:
The
setDividerLocation
method
of
JSplitPane
does not work.
- The
setDividerLocation(double)
method
has no effect if the split pane has no size
(typically true if it is not onscreen yet).
You can either use setDividerLocation(int)
or specify the preferred sizes of
the split pane's contained components
and the split pane's resize weight instead.
Refer to
Positioning the Divider
and Restricting Its Range
for information.
Problem:
The borders on nested split panes look too wide.
- If you nest split panes,
the borders accumulate — the border of the inner split
panes display next to the border of the outer split pane
causing borders that look extra wide.
The problem is particularly noticeable
when nesting many split panes.
The workaround is to set the border to null on any split
pane that is placed within another split pane.
For information,
see bug #
4131528 in the Bug Database at the Sun Developer Network (SDN).
Problem:
The buttons in my tool bar are too big.
- Try reducing the margin for the buttons.
For example:
button.setMargin(new Insets(0,0,0,0));
Problem:
The components in my layered pane
are not layered correctly.
In fact, the layers seem to be inversed — the
lower the depth the higher the component.
- This can happen if you use an
int
instead of an Integer
when adding components to a layered pane.
To see what happens,
in the LayeredPaneDemo
class, change
layeredPane.add(label, new Integer(i));
to
layeredPane.add(label, i);
.
Problem:
The method call
colorChooser.setPreviewPanel(null)
does not remove the color chooser's preview panel as expected.
- A
null
argument specifies the default preview panel.
To remove the preview panel, specify a standard panel with no
size, like this:
colorChooser.setPreviewPanel(new JPanel());


The first step was to solicit input from EWG/LEWG to try and capture the variety of issues
covered by the single term "ABI breakage".
This document is an informal summary of comments, including many of those made on the two evolution reflectors.
Thank you to all who have provided input; errors and omissions remain, as usual, the fault of the author.
exception_ptr
, and
noexcept
by default
From Michael Wong's original email to EWG/LEWG:
There is a concern that we need to be clear on when we can make clear ABI breakage. There seems to be several cases on a spectrum of Performance vs Stability.
Cases 1-4:
Case 1: NEVER Break ABI leads to slower and slower performance but the best stability
Case 2: we have done that before, but it is unpredictable to users
Case 3: We have never tried this before, the question is what is the appropriate time frame between breakage
Case 4: this is the fastest moving, most performance, and the least stability.
Some implementations have a published ABI - for example on x64 many implementations conform to the Itanium specification (which applies to more than just the Intel Itanium chipset.)
Some implementations publish guarantees about stability of their ABI. For example, Red Hat publish an
"Application Compatibility GUIDE" ; Appendix A guarantees compatability for three releases for various components, including libstdc++
.
Such documents and guarantees will not, in general, be under the control of WG21.
Changes to the library can sometimes be accommodated in the library ABI by using sufficiently clever programming to provide backwards compatibility with an existing binary library.
However, the degree to which this is possible, in any given case, can vary between implementors depending on their library implementation. It can be hard to know, without specialist knowledge, how feasible this might be in a specific case.
They didn't have anything on my list that individually felt (even to them) like "we should break ABI for this" - the most impactful bit would probably be improvements to hashing. But they suspect that if we plan for it with enough lead time we'll come up with a lot of quality-of-life and minor performance improvements that add up to a lot.
Or, if we are just going to let "that's an ABI break" be an automatic veto, we should probably update our published priorities. They don't think "ABI stability" is listed anywhere as a "you can rely on this" feature for C++.
exception_ptr
and shared_future
were added for C++11 there was an ballot comment raised by GB 74 about the introduction of race conditions where an exception object was accessed by two threads.The result was wording in C++11 that read (18.8.5 [propagation]/p7)
For purposes of determining the presence of a data race, operations onexception_ptr
objects shall access and modify only theexception_ptr
objects themselves and not the exceptions they refer to. Use ofrethrow_exception
onexception_ptr
objects that refer to the same exception object shall not introduce a data race. [ Note: ifrethrow_exception
rethrows the same exception object (rather than a copy), concurrent access to that rethrown exception object may introduce a data race. Changes in the number ofexception_ptr
objects that refer to a particular exception do not introduce a data race. —end note ]
noexcept
by default; this was a breaking change as existing C++03 code that threw an exception in a destructor would terminate if called from C++11 code.
The std::string
class was changed for C++11, in response to the addition of threads, to make more of its operations safely concurrently executable (which invalidated copy-on-write implementations.) This included changing data()
to require NUL termination.
Additionally, the change was designed to support the 'small string optimisation', which improves performance for strings short enough to take advantage of it.
Implementing this requires an ABI change in general as the size of the class changes, as does the layout and meaning of its members.
gcc provided a dual ABI to support both pre- and post- C++11 code, but it is still the case that by default many installations of gcc still use the pre C++11 implementation.
When ::operator new()
started throwing std::bad_alloc
, two binary incompatibilities were introduced:
new
no longer handled out of memory conditions
The changes to the definition of triviality could potentially have changed calling conventions, but to avoid that the Itanium ABI uses the C++98 definition of POD, not the current definition of trivial and standard layout, because that's evolved over time.
Adding the std::system_error
base class to std::ios_failure
for C++11 was a particularly nasty one for one implementor.
One implementor remarked: "Buy me a beer some time and I'll tell you the story of Schrödinger's Catch, which allows a single catch handler to work for
two distinct types of std::ios_failure
."
In C++11 std::char_traits
changed the parameter types of its members from const char_type&
to passing char_type
by value
(It is believeed this is still not actually implemented in libstdc++).
I think the LWG issues list records quite a few breaks between C++98 and C++03 that probably wouldn't be acceptable today, but back then almost nobody actually implemented the full standard anyway, so making breaking changes was just part of finishing the implementation!
P0482 (char8_t) changed the return type of the u8string
and generic_u8string
member functions of
std::filesystem::path
for C++20.
Whether empty class types as function arguments take up a slot in the argument list or not.
uncaught_exception
wasn't really an ABI break due to zombie names.
Same for get_unexpected/set_unexpected, etc.
ABI was the reason why we didn't make destructors implicitly virtual in polymorphic classes. "If we can take an ABI break we can fix that."
Note: the ABI was not the sole reason; and the impact of this change would be massive at this stage in the life of the language.
Adding new virtual functions to std::num_get
and std::num_put
was proposed for short float,
but it is believed has now been dropped from the proposal.
std::default_order
to associative containers was reverted because it was an ABI break.
The change from lock_guard<T>
to lock_guard
was reverted because it was an ABI break.
(Not an ABI break taken, but one that should have been (or should be) taken)
make std::unique_ptr<T>
be passed as efficiently as T*
. Currently there is
a significant performance and optimization hit from using
std::unique_ptr<T>
due to the ABI & calling convention required.
list::size
and CoW string; there
was no change in the specification that would've caused or prevented
such a passing convention. There's fairly little we could've done in
the standard to impact this.
Numerous aspects of std::unordered_map
's API and ABI force seriously suboptimal implementation strategies.
(See "SwissTable" talks.)
Same for std::map
. (For example btree-based sorted containers.)
The most frustrating for one person is std::vector
, which cannot support small-size-optimization due to stability
of pointers & iterators across move.
We changed the return type of *::emplace_back
from void
to return a reference to the new element.
We didn't do the same for push_back
because that would have broken ABI.
If we could break ABI we could make them consistent and remove one reason to (ab)use emplace_back
.
Is that really a problematic ABI break for some compilers? In gcc-land we might stick an abi_tag on it so
the new version gets a different mangling, but I believe the ABI is not
broken. Unless of course you start introspecting and use
decltype(c.push_back(e))
, but that's indirect and seems acceptable.
In reply:
Without the abi-tag the old and new versions of the function have the same mangled name.
One translation unit instantiates the old definition, and in that TU nothing uses the return value (because it's void).
Another translation unit instantiates the new definition, and the caller of the function uses the non-void return values.
You have two instantiations, with the same symbol name. The linker picks one. Because it's a Thursday the linker picks the old definition of the symbol, which doesn't actually return anything. The new TU calls the old symbol, and there is junk on the stack where it expects to find a return value.
Further reply:
Thanks. Sorry, my message was not clear enough. I know all that. My point was that some annotation like abi-tag easily avoids this issue. And you only need a very basic version of abi-tag for that, which should be easy to implement for any compiler that cares about binary compatibility. So I don't think we should refrain from making such changes for ABI reasons.
Since this is a member function, its exact signature is not mandated by the standard, so an implementation could also add an extra argument with a default value, as allowed by [member.functions], to give it a different mangling. But a vendor-specific annotation is more convenient.
Library Fundamentals defines std::packaged_task
and std::promise
with polymorphic allocator members,
which adds a pointer member to the class. That was originally proposed as a change to the standard types when LFTS was enabled,
which would have been an ABI break. Instead the types in LFTS are distinct types in a distinct namespace.
LWG2503 (multiline option should be added to syntax_option_type) is an ABI break.


@vamship/error-types
Exports custom error types that describe specific error conditions
Exports a set of classes that can be used to identify different types of errors. This is useful for post error processing, allowing for different behaviors for different error types.
Each error comes with a default error message, but also supports custom error messages. All error messages are prefixed with the argument name to help make predictable decisions based on error messages.
API Documentation
API documentation can be found here.
Motivation
Javascript is not a strongly typed language, but there are certain scenarios where having well defined types can be valuable. One of these scenarios pertain to error handling.
Let us consider the following promise chain:
const Promise = require('bluebird').Promise;
...
function fetchData(recordInfo) {
Promise.try(() => {
// Query the database for data. This call could succeed, or could throw
// either:
// (1) An error for failed schema validation
// (2) An error if the record was not found
queryDatabase(recordInfo)
}).catch((err) => {
//Check the error message and perform remedial actions.
if(err.message === 'Schema validation failed') {
//Deal with schema validation errors
} else if(err.message === 'Record not found') {
//Deal with record not found errors
} else {
//Handle all other errors.
}
});
In the above example, the exception handling code is clunky and brittle, depending on exact error message strings to make handling decisions. This can be cleaned up significantlly by using well defined error types like this:
const Promise = require('bluebird').Promise;
const { SchemaError } = require('@vamship/test-lib').args;
const { NotFoundError } = require('@vamship/test-lib').http;
...
function fetchData(recordInfo) {
Promise.try(() => {
// Query the database for data. This call could succeed, or could throw
// either:
// (1) SchemaError: If schema validation fails
// (2) NotFoundError: If the record was not found
queryDatabase(recordInfo)
}).catch(SchemaError, (err) => {
//Deal with schema validation errors
}).catch(NotFoundError, (err) => {
//Deal with record not found errors
}).catch((err) => {
//Handle all other errors.
});
Strongly typed errors are also useful if the errors are processed outside the Javascript runtime, for example when an AWS API gateway attempts to handle an error thrown by a lambda function.
Installation
This library can be installed via npm using:
npm install @vamship/error-types
Usage
The types exposed by this library are available under two namespaces:
- args: Error types for argument validation errors
- http: Error types for http errors
Examples
HTTP Errors
const errorTypes = require('@vamship/error-types');
const {BadRequestError, NotFoundError, UnauthorizedError} = errorTypes.http;
// Throws an error with message '[BadRequestError] Incorrect or malformed request'
throw new BadRequestError()
// Throws an error with message '[NotFoundError] Resource not found'
throw new NotFoundError()
// Throws an error with message '[UnauthorizedError] Authorization failed'
throw new UnauthorizedError()
Argument Errors
const errorTypes = require('@vamship/error-types');
const {ArgError, SchemaError} = errorTypes.args;
// Throws an error with message '[ArgError] Arugment validation failed'
throw new ArgError()
// Throws an error with message '[SchemaError] Schema validation failed'
throw new SchemaError()


- Replication concepts
- Configure OpenLDAP replication
- Analyze replication log files
- Understand replica hubs
- LDAP referrals
- LDAP sync replication
- master / slave server
- multi-master replication
- consumer
- replica hub
- one-shot mode
- referral
- syncrepl
- pull-based / push-based synchronization
- refreshOnly and refreshAndPersist
- replog
- Securing the directory with SSL and TLS
- Firewall considerations
- Unauthenticated access methods
- User / password authentication methods
- Maintanence of SASL user DB
- Client / server certificates
- SSL / TLS
- Security Strength Factors (SSF)
- SASL
- proxy authorization
- StartTLS
- iptables
- Measure OpenLDAP performance
- Tune software configuration to increase performance
- Understand indexes
- index
- DB_CONFIG
Weight: 2
- Configure PAM to use LDAP for authentication
- Configure NSS to retrieve information from LDAP
- Configure PAM modules in various Unix environments
- PAM
- NSS
- /etc/pam.d/
- /etc/nsswitch.conf
Weight: 2
- Kerberos integration with LDAP
- Cross platform authentication
- Single sign-on concepts
- Integration and compatibility limitations between OpenLDAP and Active Directory
- Kerberos
- Active Directory
- single sign-on
- DNS
Weight: 2
- Understand the roles of the Samba daemons and components
- Understand key issues regarding heterogeneous networks
- Identify key TCP/UDP ports used with SMB/CIFS
- Knowledge of Samba3 and Samba4 differences
- /etc/services
- Samba daemons: smbd, nmbd, samba, winbindd
- Knowledge of Samba server configuration file structure
- Knowledge of Samba variables and configuration parameters
- Troubleshoot and debug configuration problems with Samba
- smb.conf
- smb.conf parameters
- smb.conf variables
- testparm
- secrets.tdb
- Monitor and interact with running Samba daemons
- Perform regular backups of Samba configuration and state data
- smbcontrol
- smbstatus
- tdbbackup
- Configure Samba logging
- Backup TDB files
- Restore TDB files
- Identify TDB file corruption
- Edit / list TDB file content
- /var/log/samba/
- log level
- debuglevel
- smbpasswd
- pdbedit
- secrets.tdb
- tdbbackup
- tdbdump
- tdbrestore
- tdbtool
- Understand internationalization character codes and code pages
- Understand the difference in the name space between Windows and Linux/Unix with respect to share, file and directory names in a non-English environment
- Understand the difference in the name space between Windows and Linux/Unix with respect to user and group naming in a non-English environment
- Understand the difference in the name space between Windows and Linux/Unix with respect to computer naming in a non-English environment
- internationalization
- character codes
- code pages
- smb.conf
- dos charset, display charset and unix charset
- Create and configure file sharing
- Plan file service migration
- Limit access to IPC$
- Create scripts for user and group handling of file shares
- Samba share access configuration parameters
- smb.conf
- [homes]
- smbcquotas
- smbsh
- browseable, writeable, valid users, write list, read list, read only and guest ok
- IPC$
- mount, smbmount
- Knowledge of file / directory permission control
- Understand how Samba interacts with Linux file system permissions and ACLs
- Use Samba VFS to store Windows ACLs
- smb.conf
- chmod, chown
- create mask, directory mask, force create mode, force directory mode
- smbcacls
- getfacl, setfacl
- vfs_acl_xattr, vfs_acl_tdb and vfs objects
- Create and configure printer sharing
- Configure integration between Samba and CUPS
- Manage Windows print drivers and configure downloading of print drivers
- Configure [print$]
- Understand security concerns with printer sharing
- Uploading printer drivers for Point’n’Print driver installation using ‘Add Print Driver Wizard’ in Windows
- smb.conf
- [print$]
- CUPS
- cupsd.conf
- /var/spool/samba/.
- smbspool
- rpcclient
- net
- Manager user and group accounts
- Understand user and group mapping
- Knowledge of user account management tools
- Use of the smbpasswd program
- Force ownership of file and directory objects
- pdbedit
- smb.conf
- samba-tool user (with subcommands)
- samba-tool group (with subcommands)
- smbpasswd
- /etc/passwd
- /etc/group
- force user, force group.
- idmap
- Setup a local password database
- Perform password synchronization
- Knowledge of different passdb backends
- Convert between Samba passdb backends
- Integrate Samba with LDAP
- Configure Winbind service
- Configure PAM and NSS
- smb.conf
- smbpasswd, tdbsam, ldapsam
- passdb backend
- libnss_winbind
- libpam_winbind
- libpam_smbpass
- wbinfo
- getent
- SID and foreign SID
- /etc/passwd
- /etc/group
- Understand and configure domain membership and trust relationships
- Create and maintain a primary domain controller with Samba3 and Samba4
- Create and maintain a backup domain controller with Samba3 and Samba4
- Add computers to an existing domain
- Configure logon scripts
- Configure roaming profiles
- Configure system policies
- smb.conf
- security mode
- server role
- domain logons
- domain master
- logon script
- logon path
- NTConfig.pol
- net
- profiles
- add machine script
- profile acls
- Configure and test Samba 4 as an AD DC
- Using smbclient to confirm AD operation
- Understand how Samba integrates with AD services: DNS, Kerberos, NTP, LDAP
- smb.conf
- server role
- samba-tool domain (with subcommands)
- samba
- Joining Samba to an existing NT4 domain
- Joining Samba to an existing AD domain
- Ability to obtain a TGT from a KDC
- smb.conf
- server role
- server security
- net command
- kinit, TGT and REALM
- Understand WINS concepts
- Understand NetBIOS concepts
- Understand the role of a local master browser
- Understand the role of a domain master browser
- Understand the role of Samba as a WINS server
- Understand name resolution
- Configure Samba as a WINS server
- onfigure WINS replication
- Understand NetBIOS browsing and browser elections
- Understand NETBIOS name types
- smb.conf
- nmblookup
- smbclient
- name resolve order
- lmhosts
- wins support, wins server, wins proxy, dns proxy
- domain master, os level, preferred master
- Understand and manage DNS for Samba4 as an AD Domain Controller
- DNS forwarding with the internal DNS server of Samba4
- samba-tool dns (with subcommands)
- smb.conf
- dns forwarder
- /etc/resolv.conf
- dig, host
##397.1 CIFS Integration
- Understand SMB/CIFS concepts
- Access and mount remote CIFS shares from a Linux client
- Securely storing CIFS credentials
- Understand features and benefits of CIFS
- Understand permissions and file ownership of remote CIFS shares
- SMB/CIFS
- mount, mount.cifs
- smbclient
- smbget
- smbtar
- smbtree
- findsmb
- smb.conf
- smbcquotas
- /etc/fstab
- Knowledge of Windows clients
- Explore browse lists and SMB clients from Windows
- Share file / print resources from Windows
- Use of the smbclient program
- Use of the Windows net utility
- Windows net command
- smbclient
- control panel
- rdesktop
- workgroup
Last Modified: 2021-07-03T23:54:27.543892Z


Sources
Pipes Content By Nintendo/Mario
Game Content By Dong Nguyen
Recreated By Josh Baldespinosa
Application Used
Photoshop CS6
Notepad++
Google Chrome
Python 2.7.15
Zip
Back to game